signal机制疑问
最近在看内核代码时,发现LINUX是在进程调度时执行signal关联的handler函数,这会不会导致程序数据不一致,如
struct data
{
int a;
int b;
}g_data;
int fun()
{
g_data.a = 1;
g_data.b = 2;
}
int main()
{
signal( XXX, fun );
g_data.a = 0;
g_data.b = 0;
...
}
如果程序在执行g_data.b = 0;之前执行信号处理函数fun(),执行后g_data.a = 1; g_data.b = 2;而main函数中还认为g_data.a和g_data.b都是0
会不会造成数据不一致的情况出现呀?