Linux 进程同时创建5个线程 各自调用同一个函数

发布于 2024-10-18 11:07:01 字数 1571 浏览 13 评论 0

#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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

梦太阳

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

新人笑

文章 0 评论 0

mb_vYjKhcd3

文章 0 评论 0

小高

文章 0 评论 0

来日方长

文章 0 评论 0

哄哄

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文