`
sipgreen
  • 浏览: 25453 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

为什么linux下多线程编程,每次执行结果都不一样

 
阅读更多

#include <pthread.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>


#include <iostream>
using namespace std;


void* myThread(void* arg);


int main() {

	int ret=0;
	pthread_t mythread;

	ret=pthread_create(&mythread,NULL,myThread,NULL);

	if(ret !=0)
	{
		printf("Can't create pthread (%s) \n", strerror(errno));
	}

	int status=0;

	pthread_join(ret,(void ** ) status);

	cout<<status<<endl;
	cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
	return 0;
}


void* myThread(void* arg)
{
	printf("Thread ran\n");

	printf("fjsdlkjfkdslfkjlsklds");

	//pthread_exit(arg);
}
 

 

 

andrewu@andrewu-VirtualBox:~/workspace/cpp/PTthreadeg/src$ ../Debug/PTthreadeg 0

!!!Hello World!!!

Thread ran

andrewu@andrewu-VirtualBox:~/workspace/cpp/PTthreadeg/src$ ../Debug/PTthreadeg 

0

!!!Hello World!!!

andrewu@andrewu-VirtualBox:~/workspace/cpp/PTthreadeg/src$ ../Debug/PTthreadeg 

0

!!!Hello World!!!

andrewu@andrewu-VirtualBox:~/workspace/cpp/PTthreadeg/src$ ../Debug/PTthreadeg 

0

!!!Hello World!!!

andrewu@andrewu-VirtualBox:~/workspace/cpp/PTthreadeg/src$ ../Debug/PTthreadeg 

Thread ran

0

!!!Hello World!!!

andrewu@andrewu-VirtualBox:~/workspace/cpp/PTthreadeg/src$ ../Debug/PTthreadeg 

0Thread ran

fjsdlkjfkdslfkjlsklds

!!!Hello World!!!

andrewu@andrewu-VirtualBox:~/workspace/cpp/PTthreadeg/src$ ../Debug/PTthreadeg 

0

!!!Hello World!!!

Thread ran

Thread ran

andrewu@andrewu-VirtualBox:~/workspace/cpp/PTthreadeg/src$ 


分享到:
评论

相关推荐

    Linux多线程编程技术

    内核需要多个执行流并行,为了防止可能的阻塞,多线程化是必要 的。内核线程就是内核的分身,一个分身可以处理一件特定事情。Linux内核使用内核线程来将内核分成几个功能模块,像kswapd、kflushd等, 这在处理异步...

    linux系统编程之线程.zip

    线程ID:pthread_t类型,本质:在Linux下为无符号整数(%lu),其他系统中可能是结构体实现 线程ID是进程内部,识别标志。(两个进程间,线程ID允许相同) 注意:不应使用全局变量 pthread_t tid,在子线程中通过...

    linux c编程实战源码

    此外,要注意:有些程序编译时要带上命令行参数,比如编译多线程程序时,需带上-lpthread选项。对于此类程序编译时,书中都有对应的编译命令。对于一般的程序,只需使用如下命令:gcc -o test test.c。 2.由于格式...

    linux学习笔记(包含Linux系统和shell编程).zip

    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix...

    Linux操作系统下学习, 包括Linux基本开发方法, 系统编程, 网络编程等内容.zip

    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix...

    学习linux相关的知识,包括基本的linux指令,shell编程以及git相关知识.zip

    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix...

    让Linux像Windows一样方便

    好多想学习Linux的人对Linux都是心仪已久,不过初学她可能觉得她只可远观,因为她不像Windows那样易上手,这本书以Redhat Enterprise Linux第四版(AS 4)为例,讲解如何使得你的Linux易用好用,让你觉得她很贴心 ...

    一个进程池的服务器程序

    由于listenfd是在fork之前就有的,所以所有子进程都可以访问到,不需用到“进程间文件描述符传递”问题; 4,子进程每accept到一个请求都告诉父进程,父进程把请求数加1;子进程没完成一个请求,父进程把请求数减1;...

    C++开发:为什么多线程读写shared_ptr要加锁的详细介绍

    我在《Linux 多线程服务端编程:使用 muduo C++ 网络库》第 1.9 节“再论 shared_ptr 的线程安全”中写道: (shared_ptr)的引用计数本身是安全且无锁的,但对象的读写则不是,因为 shared_ptr 有两个数据成员,...

    Python企业级全技术栈开发 高级爬虫实战+机器学习+人脸识别+语音识别+金融项目实战等

    课程以ubuntu系统开篇进行Ptython基础的教学,算是你同学们换了一个不一样的视角,也多一次解除Linux系统机会。课程内容也是接近全栈开发的技术,课程的安排也是非常的严谨。从Python基础课程,PYTHON0递归 函数 ...

    Python企业级全技术栈开发.zip

    课程以ubuntu系统开篇进行Ptython基础的教学,算是你同学们换了一个不一样的视角,也多一次解除Linux系统机会。课程内容也是接近全栈开发的技术,课程的安排也是非常的严谨。从Python基础课程,PYTHON0递归 函数 ...

    Python企业级全技术栈开发视频教程.rar

    课程以ubuntu系统开篇进行Ptython基础的教学,算是你同学们换了一个不一样的视角,也多一次解除Linux系统机会。课程内容也是接近全栈开发的技术,课程的安排也是非常的严谨。从Python基础课程,PYTHON0递归 函数 ...

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

    x-scan-v3.3-cn

    另外注意载下在扫描器的时候注意压缩报文件的扩展名,如果是tar为扩展名,那么这个扫描器是运行在Linux系统下的,这种其它操作平台的扫描器无法在视窗平台下应用,文件格式也和FAT32不一样。 8、扫描器只报告漏洞...

    windows环境下32位汇编语言程序设计

    Win32环境下的很多高级语言,如Visual C++和Visual Basic等,一如既往地对实现的细节进行了或深或浅的封装,就连最能表现Windows特征的部分,如消息循环和多线程的处理等内容也都被隐藏封装,使我们在使用它们进行...

    c#学习笔记.txt

    另外我发现论坛上学习Java的人都非常的有个性,当有人问起学习哪种语言更好时,他会打出几百个“JAVA”来,填满整个屏幕,也不说是为了什么。我觉得这样做未免有些太霸道了,如果你说这叫偏执狂我也不反对,虽然我...

    Android高级编程--源代码

     由于Android 1.0是一个正在兴起的全新手机操作系统,所以当前支持它的手机还不多。和任何其他产品早期的发行版一样,Android的软件和开发库还会经历很多正常的改进和完善。本书的内容和示例提供了如何使用当前SDK...

    超级有影响力霸气的Java面试题大全文档

    与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。...

    java 面试题 总结

    与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上低于servlet。...

Global site tag (gtag.js) - Google Analytics