我需要nanosleep
在我的用户空间线程库中使用该函数来实现大约所需数量的等待,因为它可以在异步信号中断的情况下节省剩余时间。我使用 SIGALRM 抢先切换线程;因此,重要的是要考虑使用不可重入函数的可能副作用。出于这个原因,如果一个nanosleep
调用被线程切换中断并且从另一个线程或信号处理程序再次调用它,我想知道这种情况是否会导致问题。
显然,nanosleep
函数不是异步信号安全的,因为它没有在此处列出;但是,sleep(3)
据说是异步信号安全的。另一方面,sleep(3)
似乎是nanosleep
在 Linux 上使用实现的。我可以将此作为nanosleep
对我想要实现的目标安全的证据吗?
编辑:根据这个资源,它确实是安全的。