当前位置: 技术问答>linux和unix
关于linux线程执行顺序的问题
来源: 互联网 发布时间:2017-03-29
本文导语: 这是个简单的多线程实现, 我想请问:当主线程sleep后,理应执行子线程,1s之后再返回主线程的, 但是有没有这样的可能,主线程sleep之后,没有去执行子线程,反而去执行系统其他的进程,最后1s到后,直接返回...
这是个简单的多线程实现,
我想请问:当主线程sleep后,理应执行子线程,1s之后再返回主线程的,
但是有没有这样的可能,主线程sleep之后,没有去执行子线程,反而去执行系统其他的进程,最后1s到后,直接返回了主线程,最后导致子线程没有被执行?会不会出现这种情况?
1. #include
2. #include
3. #include
4. #include
5. #include
6. static void thread_one(char* msg);
8. int main(int argc, char** argv)
9. {
10. pthread_t th_one;
11. char * msg="thread";
12. printf("thread_one starting/n");
13. if(pthread_create(&th_one,NULL,(void*)&thread_one,msg)!=0)
14. {
15. exit(EXIT_FAILURE);
16. }
17.
18.
23. printf("Main thread will sleep 1 S/n");
24. sleep(1);//@2
25. return 0;
26.
27. }
28. static void thread_one(char* msg)
29. {
30. int i=0;
31. while(i
我想请问:当主线程sleep后,理应执行子线程,1s之后再返回主线程的,
但是有没有这样的可能,主线程sleep之后,没有去执行子线程,反而去执行系统其他的进程,最后1s到后,直接返回了主线程,最后导致子线程没有被执行?会不会出现这种情况?
1. #include
2. #include
3. #include
4. #include
5. #include
6. static void thread_one(char* msg);
8. int main(int argc, char** argv)
9. {
10. pthread_t th_one;
11. char * msg="thread";
12. printf("thread_one starting/n");
13. if(pthread_create(&th_one,NULL,(void*)&thread_one,msg)!=0)
14. {
15. exit(EXIT_FAILURE);
16. }
17.
18.
23. printf("Main thread will sleep 1 S/n");
24. sleep(1);//@2
25. return 0;
26.
27. }
28. static void thread_one(char* msg)
29. {
30. int i=0;
31. while(i