Chinaunix首页 | 论坛 | 博客
  • 博客访问: 24918
  • 博文数量: 7
  • 博客积分: 1420
  • 博客等级: 上尉
  • 技术积分: 80
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-17 22:03
文章分类

全部博文(7)

文章存档

2009年(1)

2008年(6)

我的朋友
最近访客

分类: LINUX

2008-05-28 11:24:57

POSIX.1模型中,异步signal发送到进程后,进程中当前没有阻塞该信号的某个线程被选中接受信号。在实现一个基于事件模型的应用时候,可以用pthread_sigmash来选择阻塞那些信号。但是linux不遵守这个规则,linux线程是独立的,当我们采用POSIX模型发送信号给进程时,会发现信号丢失。

解决这个问题的办法是直接发送信号给线程。使用gettid函数获取线程id,由于glibc并未提供gettid,需要自己封装,如下。


#include

pid_t gettid()
{
     return syscall(SYS_gettid);
}

阅读(1155) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:the beginning

给主人留下些什么吧!~~