信号与信号量的区别

2019-11-28  本文已影响0人  吕艳凯

       Linux提供了以信号传递进程间消息的机制,Nginx在管理master进程和worker进程时大量使用了信号。什么是信号?它是一种非常短的消息,短到只有一个数字。在中文译名中,信号相比下文将要介绍的信号量只少了一个字,但它们完全是两个概念,信号量仅用于同步代码段,而信号则用于传递消息。一个进程可以向另外一个进程或者另外一组进程发送信号消息,通知目标进程执行特定的代码。

       信号量与信号不同,它不像信号那样用来传递消息,而是用来保证两个或多个代码段不被并发访问,是一种保证共享资源有序访问的工具。使用信号量作为互斥锁有可能导致进程睡眠,因此,要谨慎使用,特别是对于Nginx这种每一个进程同时处理着数以万计请求的服务器来说,这种导致睡眠的操作将有可能造成性能大幅降低。

信号量提供的用法非常多,但Nginx仅把它作为简单的互斥锁来使用。

上一篇 下一篇

猜你喜欢

热点阅读