根本不使用它们。实际上 POSIX 中允许sleep使用的文本SIGALRM与线程安全的要求相冲突sleep,并且已经在 POSIX 的下一个版本中修复,但最好还是避免它。
代替sleep,使用nanosleep或clock_nanosleep。
代替alarm,取决于您想要做什么,您可以使用 POSIX 计时器或其他一些机制。但是,在超时后用信号中断卡住操作的整个习语alarm不适用于多线程程序,因此实际上您应该放弃整个alarm习语并为现代代码使用不同的方法。