多线程的实现
来源:互联网 发布:外文数据库检索 编辑:程序博客网 时间:2024/06/04 01:06
include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <pthread.h>#define NUM_THREADS 6 // 定义线程总素void *thread_function(void *arg);int main(){ int res; pthread_t a_thread[NUM_THREADS]; // 定义线程数组 void *thread_result; int lots_of_threads; for (lots_of_threads = 0; lots_of_threads < NUM_THREADS; lots_of_threads++) { res = pthread_create(&(a_thread[lots_of_threads]), NULL, thread_function, (void *) &lots_of_threads); // 创建一个线程 if (res != 0) { perror("线程创建失败"); exit(EXIT_FAILURE); } sleep(1); // 主线程睡眠1秒 } printf("等待线程结束...\n"); for (lots_of_threads = NUM_THREADS - 1; lots_of_threads >= 0; lots_of_threads--) { res = pthread_join(a_thread[lots_of_threads], &thread_result); // 等待线程结束 if (res == 0) { printf("结束一个线程\n"); } else { perror("线程结束失败"); } } printf("线程全部结束\n"); exit(EXIT_SUCCESS);}void *thread_function(void *arg) // 定义线程函数{ int my_number = *(int *) arg; // 接收主线程传递的参数,该参数可以是任意类型 int rand_num; printf("线程函数已运行,参数为:%d\n", my_number); rand_num = 1 + (int) (9.0 * rand() / (RAND_MAX + 1.0)); // 获得一个随机数 sleep(rand_num); // 线程以随机数定义的时间睡眠 printf("第%d个线程结束\n", my_number); pthread_exit(NULL); // 结束线程}
0 0
- 多线程、多线程的实现、多线程的生命周期
- 多线程、多线程的实现、多线程的生命周期
- Java 多线程(多线程的实现)
- 多线程断点续传的实现
- 多线程的实现方法
- WPF多线程的实现
- 多线程的实现
- 多线程的实现
- Java 多线程的实现
- pb多线程的实现
- Java多线程的实现
- 多线程的实现
- C#多线程的实现
- delphi多线程的实现
- java多线程的实现
- java多线程的实现
- JAVA多线程的实现
- 多线程实现的总结
- POJ 2992-Divisors(求组合数质因子的个数)
- Sqlite 创建触发器(删除)
- HDU 1020 — Encoding
- Python学习之Threading, Queue
- 第四周项目-1.3
- 多线程的实现
- 黑马程序员——IO流(中篇)
- 前端性能优化指南(含移动端)
- 2014-4-27-Jquery学习
- C和指针读书笔记-第14章(预处理器)
- 判断一个整数是否是n^m次方类型数据,并比较乘法和除法性能差异
- 黑马程序员-------Java笔记问答总结01
- Java学习笔记之常用API学习笔记2
- 汇编指令: MOV、MOVSB、MOVSW、MOVSD、MOVSX、MOVZX