多线程编程实验
2016-05-24 17:29
155 查看
/*thread.c*/ #include <stdio.h> #include <stdlib.h> #include <pthread.h> #define THREAD_NUMBER 3 /*线程数*/ #define REPEAY_NUMBER 5 /*每个线程中的小任务*/ #define DELAY_TIME_LEVELS 10.0 /*小任务之间的最大时间间隔*/ void *thrd_func(void *arg) {/*线程函数例程*/ int thrd_num = (int)arg; int delay_time = 0; int count = 0; printf("Thread %d is starting \n",thrd_num); for(count = 0;count< REPEAY_NUMBER;count++) { delay_time = (int) (rand() * DELAY_TIME_LEVELS/(RAND_MAX))+1; sleep(delay_time); printf("\t Thread %d: job %d delay = %d\n",thrd_num,count,delay_time); } printf("Thread %d finished \n",thrd_num); pthread_exit(NULL); } int main(void) { pthread_t thread[THREAD_NUMBER]; int no = 0,res; void * thrd_ret; srand(time(NULL)); for(no =0;no < THREAD_NUMBER; no ++) { /*创建多线程*/ res = pthread_create(&thread[no],NULL,thrd_func,(void*)no); if(res != 0) { printf("Create thread %d failed \n",no); } } printf("Create tread success\n Waiting for threads to finish...\n"); for(no = 0;no <THREAD_NUMBER;no++) { /*等待线程结束*/ res = pthread_join(thread[no],&thrd_ret); if(!res) { printf("Thread %d jioned \n",no); } else { printf("Thread %d jion failed \n",no); } } return 0; }
相关文章推荐
- java-模拟tomcat服务器
- Python3写爬虫(四)多线程实现数据爬取
- C#实现多线程的同步方法实例分析
- 浅谈chuck-lua中的多线程
- C#简单多线程同步和优先权用法实例
- C#多线程学习之(四)使用线程池进行多线程的自动管理
- C#多线程编程中的锁系统(三)
- 解析C#多线程编程中异步多线程的实现及线程池的使用
- C#多线程学习之(六)互斥对象用法实例
- 基于一个应用程序多线程误用的分析详解
- C#多线程学习之(三)生产者和消费者用法分析
- C#多线程学习之(一)多线程的相关概念分析
- C#多线程之Thread中Thread.IsAlive属性用法分析
- 分享我在工作中遇到的多线程下导致RCW无法释放的问题
- C#多线程编程之使用ReaderWriterLock类实现多用户读与单用户写同步的方法
- C#控制台下测试多线程的方法
- 21天学习android开发教程之SurfaceView与多线程的混搭
- Ruby 多线程的潜力和弱点分析
- C#中WPF使用多线程调用窗体组件的方法
- Android NDK pthreads详细使用