e******r 发帖数: 623 | 1 在UNIX环境下C语言编程。我在main()里面创建了几个线程,程序如下:
int main(int argc, char **argv) {
int i;
for(i = 0; i < N; i++) {
pthread_create(NULL, NULL, reader_thread, NULL);
}
for(i = 0; i < M; i++) {
pthread_create(NULL, NULL, writer_thread, NULL);
}
return 0;
}
我如果在创建完线程以后直接就“return 0”了,是不是所有线程也就被迫同时中止了
?如果我想在main()里面等待所有线程都执行完以后再“return 0”,应该加一个什么
function?我知道可以用sleep()来等待,但是好像有更好的函数。查了半天没有找到
,哪位朋友帮忙指点一下?有肉包相送,谢谢了。 | p***o 发帖数: 1252 | 2 pthread_join
【在 e******r 的大作中提到】 : 在UNIX环境下C语言编程。我在main()里面创建了几个线程,程序如下: : int main(int argc, char **argv) { : int i; : for(i = 0; i < N; i++) { : pthread_create(NULL, NULL, reader_thread, NULL); : } : for(i = 0; i < M; i++) { : pthread_create(NULL, NULL, writer_thread, NULL); : } : return 0;
| T*****9 发帖数: 2484 | 3 pthread_join
【在 e******r 的大作中提到】 : 在UNIX环境下C语言编程。我在main()里面创建了几个线程,程序如下: : int main(int argc, char **argv) { : int i; : for(i = 0; i < N; i++) { : pthread_create(NULL, NULL, reader_thread, NULL); : } : for(i = 0; i < M; i++) { : pthread_create(NULL, NULL, writer_thread, NULL); : } : return 0;
| e******r 发帖数: 623 | 4 谢谢。我想过用pthread_join,但是好像要分头去join每一个我create出来的线程,比
较麻烦。但是看来没有什么更简单的了。肉包已发。 | T*****9 发帖数: 2484 | 5 直接建一个线程号数组就行了呗
一个for loop全部join
【在 e******r 的大作中提到】 : 谢谢。我想过用pthread_join,但是好像要分头去join每一个我create出来的线程,比 : 较麻烦。但是看来没有什么更简单的了。肉包已发。
| e******r 发帖数: 623 | 6 如果我创建完线程以后,main()直接就return 0了,是不是那些线程也同时就都被强行
中止了?
【在 T*****9 的大作中提到】 : 直接建一个线程号数组就行了呗 : 一个for loop全部join
| k******I 发帖数: 238 | | r****o 发帖数: 1950 | 8 我想问一下join和yield的区别。
是不是join等其他线程结束,而yield可以和其他线程一起竞争?
【在 k******I 的大作中提到】 : 写一下就知道join是干啥的了:D
|
|