当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 3 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 高手帮忙看看两个线程之间怎么死锁了?
帖子发表于 : 2007-09-04 18:55 

注册: 2007-08-28 20:59
帖子: 22
送出感谢: 0 次
接收感谢: 0 次
源代码如下:
1 #include<stdio.h>
2 #include<unistd.h>
3 #include<stdlib.h>
4 #include<pthread.h>
5 #include<string.h>
6 void *thread_function(void* arg);
7 char message[] = "Hello World";
8 int run_now = 1;
9 int main()
10 {
11 int res;
12 pthread_t a_thread;
13 void * thread_result;
14
15 res = pthread_create(&a_thread,NULL, thread_function,(void *)message);
16 if(res != 0)
17 {
18 perror("Thread creation failed");
19 exit(EXIT_FAILURE);
20 }
21 printf("waiting for thread to finish...\n");
22
23 int count1 = 0;
24 while(count1 < 20)
25 {
26 if(run_now == 1)
27 {
28 printf("1");
29 run_now = 2;
30 count1++;
31 }
32 else
33 {
34 sleep(2);
35 }
36 }
37
38 printf("Thread joined, it returned %s\n",(char *)thread_result);
39 printf("Message is now %s\n", message);
40 exit(EXIT_SUCCESS);
41 }
42
43 void *thread_function(void *arg)
44 {
45 int count2 = 0;
46 while((count2++)<20)
47 {
48 if(run_now == 2)
49 {
50 printf("2");
51 run_now = 1;
52 }
53 else
54 {
55 sleep(2);
56 }
57 }
58 strcpy(message, "Bye!");
59 pthread_exit("Thank you for the CPU time");
60 }
看了好久,百思不得其解,请高手帮我瞧瞧哪里出问题了..


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2007-09-09 11:00 

注册: 2007-08-28 20:59
帖子: 22
送出感谢: 0 次
接收感谢: 0 次
已解决


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2007-09-09 11:52 
头像

注册: 2007-04-28 21:38
帖子: 1026
送出感谢: 0 次
接收感谢: 0 次
不厚道,没说怎么解决的。。。
另外,这种文章求救应该发到CU比较好


_________________
thinkpad x61 2G DDR no cdrom
--------------------------------------------
ABS学习中
sed学习中
awk学习中
perl学习中
新手描述不清,老手猜测不到,胡乱指挥一通,后果难以预料


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 3 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:vickycq 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译