图像检索服务器编写问题记录——线程中信号的处理方式思考
来源:互联网 发布:iphone软件开发教程 编辑:程序博客网 时间:2024/04/29 15:24
【信号的分类】:
1.SIGKILL、SIGSTOP这两个信号单独一类,这两个信号不能被捕捉、忽略和阻塞。表示杀死进程和暂停进程,它们为root提供了一种一定可以杀死或暂停进程的方法。
2.SIGBUS、SIGFPE、SIGSEGV这类由硬件引起的硬件故障、段错误、除0错误等信号只会发送给引起该硬件错误的线程。【对于多线程而言是:同步信号,不能阻塞、忽略,只会送往产生信号的那个线程;但如果是其他线程用pthread_kill发送的这类信号,那么是可以阻塞的】
3.SIGCHLD、SIGALRM、SIGUSR1等等普通信号【这个原来叫异步信号,可以被阻塞,忽略,送往其他线程处理】
4.对于多线程而言,还有一类由pthread_kill发送的定向信号。
【信号的处理方式】:
1.捕捉;2.忽略;3.默认处理
【信号的状态】:
1.信号产生;2.信号未决;3.信号递送。信号在产生和递送成功之间的过程叫信号未决。若某信号没有被设置成忽略、那么阻塞信号的行为导致的是信号未决。
【信号传递方式与多线程】:
1.第一类信号即SIGKILL它们,无法被捕捉、忽略和阻塞。处理过程中我们不去管它
2.第二类信号即SIGBUS等硬件故障引起的信号,只会被发送到引起故障的那个线程,所以所有线程不能阻塞、忽略这些信号,需要捕捉该信号
3.第三类信号即SIGCHLD等普通信号,会随机发送到进程中的任意一个线程来处理。为此我们打算在工作线程和主线程中阻塞这些信号,交由专门的信号处理线程去处理这些信号,这样主线程和工作线程就不会被打断,也不用去考虑函数的可重入与否。
【信号处理与多线程】:
同个进程中的线程们共享信号处理器,但可以拥有自己的信号屏蔽集。即若在主函数中安装处理SIGBUS的信号处理函数,那么其他线程也是共享这个信号处理函数的。若在主线程中没有阻塞信号SIGUSR1,那么在其他线程中同样可以用pthread_sigmask来阻塞该信号,不处理该信号。
信号发送到进程会寻便所有进程中的线程,让找到的第一个未阻塞本信号的线程来处理自己。
【信号捕捉方法】
1.sigaction(signal):sigaction在一个线程中对某信号的注册行为,在同个进程中的其他线程共享这种行为。对实时处理要求高的信号,用sigaction来安装信号捕捉处理函数
2.sigwait:sigwait只处理那些被(其他所有线程)阻塞的信号。它将到来的信号们排排队,挨个处理,实时性要求低的信号们该采用的方法
【本图像检索服务器对信号的处理方式】
1.对于第二类信号SIGBUS这种只会发送到本线程的,我使用sigaction捕捉处理
2.对于第三类信号SIGCHLD这种的,专门开一个线程来处理信号,以免打扰工作线程和主线程工作。方式是sigwait,sigwait在没有信号到来是会挂起线程,避免线程空转
- 图像检索服务器编写问题记录——线程中信号的处理方式思考
- 图像检索服务器编写问题记录——加入信号安装后的问题
- 图像检索服务器编写问题记录——关于任务队列的思考
- 图像检索服务器编写问题记录——服务端的任务队列线程分配的反思
- 图像检索服务器编写问题记录——服务器端模型再思考
- 图像检索服务器编写问题记录——添加线程池
- 图像检索服务器编写问题记录——epoll+多线程传输图片时的问题
- 图像检索服务器编写问题记录——特征库的存储问题
- 图像检索服务器编写问题记录——拒绝可恶的编译器优化
- 图像检索服务器编写问题记录——日志系统问题记录
- 图像检索服务器编写问题记录——用socket传输图片
- 图像检索服务器编写问题记录——服务器端模型选择+epoll和非阻塞IO
- 图像检索服务器编写问题记录——日志定时写回
- 图像检索服务器编写问题记录——SIFT尺度不变特征变换匹配算法学习
- 图像检索服务器编写问题记录——MSER最大稳定极值区域检测
- 图像检索服务器编写问题记录——TCP粘包了!!!
- 图像检索服务器编写问题记录——回忆历次版本更改
- 图像检索服务器编写问题记录——用单例模式确保log类、server类只返回一个实例
- React中的Router
- Handler消息处理机制
- [FUNC]AutoHotkey提示信息,只显示彩色文字 比如红色文字
- pwnhub——胖哈勃外传-第一集 writeup
- Spring Bean的生命周期
- 图像检索服务器编写问题记录——线程中信号的处理方式思考
- DataBinding系列三、表达式
- sqlserver各种注释语句的写法
- 利用excel分析IIS服务器日志
- [LeetCode] 22. Generate Parentheses
- [Android N]MediaRecorder系列之mediaRecorder与StagefrightRecorder
- iOS:Github上的开源项目集合
- 根据GPS经纬度坐标计算两点的距离算法
- Mybatis3.2.1整合Spring3.1