LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1240|回复: 1

如何在多线程中使用定时器和信号?

[复制链接]
发表于 2008-6-4 10:12:01 | 显示全部楼层 |阅读模式
有两个进程A,B,B进程由多个线程,b1,b2,b3,b4,其中b1为主线程,问题如下:
1、A向B发送一个信号,默认会有哪个线程接收呢,如果我指定b4线程接收,该怎么做?
2、在多线程编程中如何使用定时器,比如上面的B进程中的b4线程会周期性的统计其他各个线程任务完成的情况,那么在b4中设置了定时器函数可以吗?该怎么做呢?
发表于 2008-6-10 22:35:50 | 显示全部楼层
1. A向B发送信号, 内核会随机的抽取一个线程(这个线程没有屏蔽该信号)执行信号处理函数, 如果要指定b4接受信号, 进程开始的时候先屏蔽要发送的信号(sigaction()), 然后创建线程, 由于线程继承进程的信号处理函数, 所以所有的线程都屏蔽了该信号, 然后在b4线程用pthread_signal指定该线程接受该信号. pthread_kill和pthread_signal是POSIX Threads Extension (1003.1c-1995). 注意查看glibc是否支持该标准.
2. 定时器实现就是使一个线程接受ALARM信号, 其他的线程屏蔽ALARM信号. 然后用setitmer就成了.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表