尝试以高性能方式同步调用函数,仅使用全局变量
我正在尝试通过这种方式同步调用函数
foo
:
bool global_var=0;
void* task(void*) {
while(global_var);
global_var=1;
foo();
global_var=0;
}
那么,从多个线程调用 task() 会导致数据争用或未定义的行为吗?
您的代码可能会导致数据争用和未定义的行为。变量“global_var”不受任何形式的同步保护,例如锁或原子操作,这意味着多个线程可以同时读取和写入它。