线程中的信号处理
发表于:2007-07-04来源:作者:点击数:
标签:
概念 pthread_sigmask pthread_kill 和 sigwait 概念 按照 POSIX, 异步 (外部) 信号发送到整个进程. 所有线程共享同一个设置, 即通过 sigaction 设置的线程处置方法. 每个线程有自己的信号掩码, 线程库根据该掩码决定将信号发送到哪个线程. 由于 Linux 线程
- 概念
- pthread_sigmask
- pthread_kill 和 sigwait
概念
- 按照 POSIX, 异步 (外部) 信号发送到整个进程.
- 所有线程共享同一个设置, 即通过 sigaction 设置的线程处置方法.
- 每个线程有自己的信号掩码, 线程库根据该掩码决定将信号发送到哪个线程.
- 由于 Linux 线程实现上的独特性, 外部信号始终发送到特定的线程.
pthread_sigmask
- pthread_sigmask 用来定义线程的信号掩码
- 其接口与 sigprocmask 一样
===============================================================================
#include <pthread.h>
#include <signal.h>
int pthread_sigmask (int how, const sigset_t *newmask, sigset_t *oldmask);
===============================================================================
pthread_kill 和 sigwait
===============================================================================
#include <pthread.h>
#include <signal.h>
int pthread_kill (pthread_t thread, int signo);
int sigwait (const sigset_t *set, int *sig);
===============================================================================
- pthread_kill 向特定的线程发送信号.
- sigwait 暂定调用线程, 直到 set 中定义的某个信号递达调用线程.
- sigwait 返回时, sig 中保存的是接收到的信号编号.
- sigwait 所等待的信号必须在所有线程中阻塞, 而不仅仅是调用线程.
原文转自:http://www.ltesting.net