创建线程与获取线程标识
2016-01-21 11:53
253 查看
此demo中进程创建了一批线程,可以看到:
所有线程共享进程ID,但是有自己的线程ID。
创建成功的线程的执行顺序是不确定的。
执行结果:
main PID 2847 : create thread #3076492096 OK!
main PID 2847 : create thread #3068099392 OK!
main PID 2847 : create thread #3059706688 OK!
main PID 2847 : create thread #3051313984 OK!
main PID 2847 : create thread #3042921280 OK!
main PID 2847 : create thread #3034528576 OK!
thread #3059706688 : my PID is 2847
thread #3051313984 : my PID is 2847
thread #3068099392 : my PID is 2847
thread #3042921280 : my PID is 2847
thread #3076492096 : my PID is 2847
thread #3034528576 : my PID is 2847
main PID 2847 : create thread #3026135872 OK!
main PID 2847 : create thread #3017743168 OK!
main PID 2847 : create thread #3009350464 OK!
main PID 2847 : create thread #3000957760 OK!
thread #3009350464 : my PID is 2847
thread #3017743168 : my PID is 2847
thread #3000957760 : my PID is 2847
thread #3026135872 : my PID is 2847
所有线程共享进程ID,但是有自己的线程ID。
创建成功的线程的执行顺序是不确定的。
#include <stdio.h> #include <pthread.h> //#include <unistd.h> void *fn(void *arg) { printf("thread #%u : my PID is %d\n", (unsigned int)pthread_self(), getpid()); return NULL; } int main(int argc, char *argv[]) { pthread_t tid; int error; int i; for(i=0; i<10; i++) { error = pthread_create( &tid, NULL, fn, NULL); if(0 != error) { perror("pthead_create error"); return -1; } else { printf("main PID %d : create thread #%u OK!\n", getpid(), (unsigned int)tid); } } sleep(3); /* give threads time to print out */ return 0; }
执行结果:
main PID 2847 : create thread #3076492096 OK!
main PID 2847 : create thread #3068099392 OK!
main PID 2847 : create thread #3059706688 OK!
main PID 2847 : create thread #3051313984 OK!
main PID 2847 : create thread #3042921280 OK!
main PID 2847 : create thread #3034528576 OK!
thread #3059706688 : my PID is 2847
thread #3051313984 : my PID is 2847
thread #3068099392 : my PID is 2847
thread #3042921280 : my PID is 2847
thread #3076492096 : my PID is 2847
thread #3034528576 : my PID is 2847
main PID 2847 : create thread #3026135872 OK!
main PID 2847 : create thread #3017743168 OK!
main PID 2847 : create thread #3009350464 OK!
main PID 2847 : create thread #3000957760 OK!
thread #3009350464 : my PID is 2847
thread #3017743168 : my PID is 2847
thread #3000957760 : my PID is 2847
thread #3026135872 : my PID is 2847
相关文章推荐
- 013-LAMP_enchance concurrency
- 【爱情森林】病毒清除
- 【转】 linux iio子系统
- RabbitMQ 安装
- 并发编程学习:使用读写锁来编写高效率的缓存系统
- “大寒”暖心福利《光明传说》水晶获取攻略·上篇
- Android拨打电话(Intent.ACTION.CALL)
- UITableview代理方法与Viewcontroller分离
- 奇偶排序Odd-even sort
- js console.log打印对像与数组用法详解
- Linux系统中dig命令用法完全罗列
- 7、React中的refs的使用
- Java类与对象===Java变量的作用域
- ZIGBee组网流程
- 64位Ubuntu12.04下安装arm-linux-gdb,以及解决no termcap library found的方法
- dedecms获取当前文章所在栏目URL
- 能够返回运行结果的system函数加强版本号
- (转)MVC3 类型“System.Web.Mvc.ModelClientValidationRule”同时存在
- JSONObject put,accumulate,element的区别
- Web前端攻防