- 论坛徽章:
- 0
|
- for(i = 0; i < nthreads; i++){
- count[i] = 0;
- pthread_create(&tid_produce[i], NULL, produce, (void*)&count[i]);
- }
- for(i = 0; i < nthreads; i++){
- pthread_join(tid_produce[i], NULL);
- printf("cound[%d] = %d\n", i, count[i]);
- }
复制代码
1。pthread_join函数是不是阻塞的?
2。上面的代码应该是:nthreads个线程同时运行,但是pthread_join函数返回的顺序是从第一个线程返回后,继续
循环,然后依此等待第2,3,.............线程返回,是不是这样的?
3。加入等待第1个线程返回时,第2个线程已经结束返回,但此时等待第2个线程的pthread_join(tid_produce[1], NULL)还没有开始,因为
第一个pthread_join(tid_produce[0],NULL)还没有返回呢!那么这个时候当for循环到处理第2个线程的pthread_join(tid_produce[1], NULL)
时是怎么处理的? |
|