免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: aboytom
打印 上一主题 下一主题

在我的项目中的多线程程序中遇到一个问题,请大家帮助 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2007-01-20 19:49 |只看该作者
原帖由 coldwarm 于 2007-1-20 18:41 发表

  1.     pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;
  2.     pthread_cond_t PTHREAD_MUTEX_INITIALIZER;
复制代码

有一点疑问:如果你的互斥量和条件变量均定义为局部变量,那么每个线程使用各自的互斥量 ...


你说的没错,我这里只是说明这个问题才这样定义的,在我实际的项目程序中,条件变量和互斥锁是定义在主线程中的子线程创建之前,所有线程都可以访问它们。
实际应用的话,确实是不能这样定义为局部变量的。但这里我只是作为一个例子,这不是主要情况。

论坛徽章:
0
12 [报告]
发表于 2007-01-20 19:55 |只看该作者
原帖由 upstorm 于 2007-1-20 16:17 发表
pthread_exit和return
我手上没有unix手册,应该不一样的,估计一个是安全退出,一个强行退出
比如:一个程序,你用ctrl+c退出,没有问题,但是给程序发送一个信号量abc,让程序退出,但是程序如果有问题,很可 ...


其实在我的程序中,pthread_exit和return是一样的,linux下一个子线程的退出有三种方式:
1.子线程调用pthread_exit退出。
2.子线程的主函数中用return返回。
3.其它线程调用pthread_cancel来使它退出。

默认情况下,线程的属性是joinable的,即如果使用上面1或2的方法退出,如果在主线程中调用
pthread_join来等待子线程退出的话,这都是安全的,主线程等待子线程退出后,释放子线程
未释放的空间。

论坛徽章:
0
13 [报告]
发表于 2007-01-22 19:01 |只看该作者
原帖由 aboytom 于 2007-1-19 23:17 发表
在我的项目中遇到了一个多线程的问题,为了简化问题,我写了个简单的例程来
说明,操作系统是Red hat 9,2.4.20的内核,我的例程如下:

#include <pthread.h>
#include <stdio.h>
#include < ...


redhat9下确实有问题
我的as3下是好的

据说redhat9下的NPTL库有一些问题
设置环境变量LD_ASSUME_KERNEL=2.4.1试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP