gpt4 book ai didi

c - 从信号处理程序内部的共享资源读取

转载 作者:行者123 更新时间:2023-11-30 17:36:24 25 4
gpt4 key购买 nike

我有一个共享资源,表示 Web 服务器的请求统计信息,该资源在接受调用后 fork 以处理客户端连接。当父进程捕获某个信号时,我想将这些统计信息打印到 stderr,但是统计信息结构受信号量保护,并且我知道由于死锁而在信号处理程序中锁定/解锁信号量是一个坏主意问题。我尝试在 sig 处理程序中设置一个标志,并在设置该标志时通过在accept() 之后首先检查 EINTR 然后检查该标志来打印来自父进程的统计信息,但这不起作用。有什么想法吗?

最佳答案

您可以使用 __sync_fetch_and_add 等原子操作来读取统计变量,而不是在中断处理程序上下文中获取锁或设置标志。

__sync_fetch_and_add( stats, 0)

关于c - 从信号处理程序内部的共享资源读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22702190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com