【发布时间】:2020-07-16 01:53:59
【问题描述】:
我需要在我的用户空间线程库中使用nanosleep 函数来实现大约所需数量的等待,因为它可以在异步信号中断的情况下节省剩余时间。我使用 SIGALRM 抢先切换线程;因此,重要的是要考虑使用不可重入函数的可能副作用。因此,如果 nanosleep 调用被线程切换中断,并从另一个线程或信号处理程序再次调用,我想知道这种情况是否会导致问题。
显然,nanosleep 函数不是 as it is not listed here 的异步信号安全的;但是,sleep(3) 据说是异步信号安全的。另一方面,sleep(3) seems to be implemented using nanosleep on Linux。我可以以此证明nanosleep 对我想要实现的目标是安全的吗?
编辑:根据this resource,它确实是 AS 安全的。
【问题讨论】:
标签: linux multithreading signals posix ucontext