Linux 进程同时创建5个线程 各自调用同一个函数
#include <iostream>
#include <pthread.h> //多线程相关操作头文件,可移植众多平台
using namespace std;
#define NUM_THREADS 5 //线程数
void* say_hello( void* args )
{
cout << "hello..." << endl;
return NULL;
} //函数返回的是函数指针,便于后面作为参数
int main()
{
pthread_t tids[NUM_THREADS]; //线程 id
for( int i = 0; i < NUM_THREADS; ++i )
{
int ret = pthread_create( &tids[i], NULL, say_hello, NULL ); //参数:创建的线程 id,线程参数,线程运行函数的起始地址,运行函数的参数
if( ret != 0 ) //创建线程成功返回 0
{
cout << "pthread_create error:error_code=" << ret << endl;
}
}
pthread_exit( NULL ); //等待各个线程退出后,进程才结束,否则进程强制结束,线程处于未终止的状态
return 0;
}
输入命令: g++ pthread_chap1.cpp -o pthread_chap1 -lpthread
注意:
- 此为 c++程序,故用 g++来编译生成可执行文件,并且要调用处理多线程操作相关的静态链接库文件 pthread。
- -lpthread 编译选项到位置可任意,如 g++ -o pthread_chap1 pthread_chap1.cpp -lpthread
测试结果:
jack@jack:~/coding/muti_thread$ ./pthread_chap1
hello...hello...
hello...
hello...
hello...
jack@jack:~/coding/muti_thread$ ./pthread_chap1
hello...hello...hello...
hello...
hello...
可知,两次运行的结果会有差别,这不是多线程的特点吧?这显然没有同步?还有待进一步探索…
多线程的运行是混乱的,混乱就是正常?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: Opencv 基于特征点的图像对齐
下一篇: 彻底找到 Tomcat 启动速度慢的元凶
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论