从signalhandler内部的共享资源中读取



我有一个代表web服务器请求状态的共享资源,该资源在接受调用后分叉以处理客户端连接。当某个信号被父进程捕获时,我想打印这些统计数据,但是统计结构受到信号量的保护,我知道由于死锁问题,在信号处理程序中锁定/解锁信号量是一个坏主意。我试图在签名处理程序中设置一个标志,并在accept()之后首先检查EINTR设置标志,然后检查标志,但这不起作用,然后从父进程打印统计信息。什么好主意吗?

与其在中断处理程序上下文中获取锁或设置标志,不如使用原子操作(如__sync_fetch_and_add)读取统计变量。

__sync_fetch_and_add( stats, 0)

相关内容

  • 没有找到相关文章

最新更新