|
发表于 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就成了. |
|