当前位置: 技术问答>linux和unix
在线程中sleep函数休眠的问题
来源: 互联网 发布时间:2017-01-12
本文导语: 程序代码如下: [root@localhost 16ÕÂ]# cat -n test2.c 1 #include 2 #include 3 4 void*tfn7(void*arg) 5 { 6 printf("tfn7n"); 7 sleep(3); //休眠3秒 ...
程序代码如下:
[root@localhost 16ÕÂ]# cat -n test2.c
1 #include
2 #include
3
4 void*tfn7(void*arg)
5 {
6 printf("tfn7n");
7 sleep(3); //休眠3秒
8 printf("tfn7n");
9 return NULL;
10 }
11
12 int main()
13 {
14
15 pthread_t tid1;
16
17 if(pthread_create(&tid1,NULL,tfn7,NULL)==-1)
18 {
19 printf("fail to create thread ");
20 exit(0);
21 }
22
23 printf("main threadn");
24
25 return 0;
26 }
编译:
[root@localhost 16ÕÂ]# gcc -lpthread test2.c -o test2.out
运行:
[root@localhost 16ÕÂ]# ./test2.out
tfn7
main thread
问题:我在子线程中进行了休眠,按道理应该如下执行:
tfn7
(休眠3秒)
tfn7
main thread
但结果是输出tfn7之后,好像就没有休眠,然后输出main thread,不知为什么?sleep函数怎么没起作用?
请高手多多指教!不胜感激!
[root@localhost 16ÕÂ]# cat -n test2.c
1 #include
2 #include
3
4 void*tfn7(void*arg)
5 {
6 printf("tfn7n");
7 sleep(3); //休眠3秒
8 printf("tfn7n");
9 return NULL;
10 }
11
12 int main()
13 {
14
15 pthread_t tid1;
16
17 if(pthread_create(&tid1,NULL,tfn7,NULL)==-1)
18 {
19 printf("fail to create thread ");
20 exit(0);
21 }
22
23 printf("main threadn");
24
25 return 0;
26 }
编译:
[root@localhost 16ÕÂ]# gcc -lpthread test2.c -o test2.out
运行:
[root@localhost 16ÕÂ]# ./test2.out
tfn7
main thread
问题:我在子线程中进行了休眠,按道理应该如下执行:
tfn7
(休眠3秒)
tfn7
main thread
但结果是输出tfn7之后,好像就没有休眠,然后输出main thread,不知为什么?sleep函数怎么没起作用?
请高手多多指教!不胜感激!
|
主线程退出,进程则退出,子线程也随之消失。
|
子线程休眠了,主线程还在执行,执行完了就退出了。
可以用pthread_join()等待子线程结束。
可以用pthread_join()等待子线程结束。