linux多线程
来源:互联网 发布:外贸搜客户软件 编辑:程序博客网 时间:2024/06/07 05:54
#include <stdio.h>#include <stdlib.h>#include <pthread.h>#define THREAD_NUM 3#define REPEAT_TIMES 5#define DELAY 4void *thrd_func(void *arg);int main(){ pthread_t thread[THREAD_NUM]; int no; void *tret; srand((int)time(0)); // 初始化随机函数发生器 for(no=0;no<THREAD_NUM;no++){ if (pthread_create(&thread[no],NULL,thrd_func,(void*)no)!=0) { // 创建THREAD_NUM个线程,传入(void*)no作为thrd_func的参数 printf("Create thread %d error!\n",no); exit(1); } else printf("Create thread %d success!\n",no); } for(no=0;no<THREAD_NUM;no++){ if (pthread_join(thread[no],&tret)!=0){ // 等待thread[no]线程结束,线程函数返回值放在tret中 printf("Join thread %d error!\n",no); exit(1); }else printf("Join thread %d success!\n",no); } return 0;}void *thrd_func(void *arg){ int thrd_num=(void*)arg; int delay_time=0; int count=0; printf("Thread %d is starting.\n",thrd_num); for(count=0;count<REPEAT_TIMES;count++) { delay_time=(int)(DELAY*(rand()/(double)RAND_MAX))+1; sleep(delay_time); printf("\tThread %d:job %d delay =%d.\n",thrd_num,count,delay_time); } printf("Thread %d is exiting.\n",thrd_num); pthread_exit(NULL);}
运行结果:
Create thread 0 success!
Create thread 1 success!
Create thread 2 success!
Thread 2 is starting.
Thread 1 is starting.
Thread 0 is starting.
Thread 0:job 0 delay =1.
Thread 0:job 1 delay =1.
Thread 2:job 0 delay =3.
Thread 1:job 0 delay =3.
Thread 2:job 1 delay =2.
Thread 2:job 2 delay =1.
Thread 0:job 2 delay =4.
Thread 1:job 1 delay =4.
Thread 2:job 3 delay =1.
Thread 1:job 2 delay =2.
Thread 2:job 4 delay =2.
Thread 2 is exiting.
Thread 0:job 3 delay =3.
Thread 1:job 3 delay =2.
Thread 0:job 4 delay =2.
Thread 0 is exiting.
Join thread 0 success!
Thread 1:job 4 delay =1.
Thread 1 is exiting.
Join thread 1 success!
Join thread 2 success!
- linux多线程
- linux多线程
- Linux多线程
- linux多线程
- linux多线程
- linux多线程~
- LINUX多线程
- linux多线程
- Linux多线程
- linux多线程
- linux多线程
- linux多线程
- linux多线程
- linux 多线程
- Linux多线程
- linux 多线程
- Linux多线程
- LINUX 多线程
- 深入学习Django源码基础3 - python提供的对象默认方法
- MP4文件格式解析 之 二 (Sample table atom )
- Visual Studio opens the default browser instead of Internet Explorer
- POJ 1472 Coins (多重背包+滚动数组)
- Iscroll4 实现 横竖左右滚动,滑动效果比拟andriod原生.
- linux多线程
- &U盘装Win8消费者预览版只需两步骤&【系统收藏】
- 你看糊涂了吗?解析C中复杂的声明
- oracle常用函数总结
- sudo时不需要每次都输入root密码
- 如何在Windows下搭建Android开发环境
- listview baseadapter优化
- 字符串加密
- 以boost::function和boost:bind取代虚函数