Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4212551
  • 博文数量: 291
  • 博客积分: 8003
  • 博客等级: 大校
  • 技术积分: 4275
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-30 18:28
文章分类

全部博文(291)

文章存档

2017年(1)

2013年(47)

2012年(115)

2011年(121)

2010年(7)

分类: C/C++

2011-05-09 16:27:08

一直担心在线程里加sleep会引起进程所有的线程挂起,测试过了不会
 
  1. #include <pthread.h>
  2. #include <stdio.h>
  3. #include <sys/time.h>
  4. #include <string.h>
  5. #include <unistd.h>
  6. #define MAX 10

  7. pthread_t thread[2];
  8. void * thread1()
  9. {
  10.     while(1)printf ("thread1 : I'm thread 1\n");
  11. }
  12. void * thread2()
  13. {
  14.     printf("thread2 : I'm thread 2\n");
  15.     sleep(3);
  16.     printf("thread2 : I'm thread 2 end\n");
  17.     exit(0);
  18. }
  19. void thread_create(void)
  20. {
  21. int temp;
  22. memset(&thread, 0, sizeof(thread));
  23. if((temp = pthread_create(&thread[0], NULL, thread1, NULL)) != 0)
  24. printf("create thread 1 fail\n");
  25. else
  26. printf("create thread 1 success\n");
  27. if((temp = pthread_create(&thread[1], NULL, thread2, NULL)) != 0)
  28. printf("create thread 2 fail\n");
  29. else
  30. printf("create thread 2 success\n");
  31. }
  32. void thread_wait(void)
  33. {
  34.     if(thread[0] !=0) { //comment4
  35. pthread_join(thread[0],NULL);
  36. printf("thread1 end\n");
  37. }
  38. if(thread[1] !=0) { //comment5
  39. pthread_join(thread[1],NULL);
  40. printf("thread2 end\n");
  41. }
  42. }
  43. int main()
  44. {
  45. printf("i am main\n");
  46. thread_create();
  47. printf("mail waitin \n");
  48. thread_wait();
  49. return 0;
  50. }
阅读(6574) | 评论(4) | 转发(7) |
给主人留下些什么吧!~~

GFree_Wind2011-05-11 10:04:43

yifangyou: 要亲自实验过,才能保证是安全的,因为我要写的是一个服务器程序,不能被挂起,因此还是实验一下.....
主要是为了告诉你这个问题的根源。当然试验一下最好。

yifangyou2011-05-11 09:03:20

GFree_Wind: 当然不会了啊。因为thread对应到内核里面,同样是一个进程。所以只会挂起自己.....
要亲自实验过,才能保证是安全的,因为我要写的是一个服务器程序,不能被挂起,因此还是实验一下

cluter2011-05-10 18:44:38

GFree_Wind2011-05-10 12:32:59

当然不会了啊。因为thread对应到内核里面,同样是一个进程。所以只会挂起自己