来自函数定义:
int clock_gettime(clockid_t clock_id, struct timespec * tp);
此函数需要一个 timespec
结构的指针。我想知道如果我们传递相同的全局变量结构 timespec
为什么这个异步信号是安全的?例如,主程序在信号中断发生时调用 clock_gettime
并再次调用 clock_gettime
,它们都传递一个全局 timespec
结构指针。它们是否相互干扰?
最佳答案
您所描述的将不是异步信号安全。但不安全的是你自己的代码,而不是函数本身。如果信号处理程序不是原子的,则在信号处理程序的内部和外部使用“全局”是永远不安全的。只有一种类型保证是原子 wrt 信号处理程序:sig_atomic_t
。不要忘记也将其声明为 volatile
。
clock_gettime()
是异步信号安全,但这并不能避免您自己犯错。
关于c - 为什么 clock_gettime 是异步信号安全的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51453570/