使用共享变量同步多线程 C 中的函数

问题描述 投票:0回答:1

尝试以高性能方式同步调用函数,仅使用全局变量

我正在尝试通过这种方式同步调用函数

foo

bool global_var=0;
void* task(void*) {
    while(global_var);
    global_var=1;
    foo();
    global_var=0;
}

那么,从多个线程调用 task() 会导致数据争用或未定义的行为吗?

c multithreading synchronization
1个回答
0
投票

您的代码可能会导致数据争用和未定义的行为。变量“global_var”不受任何形式的同步保护,例如锁或原子操作,这意味着多个线程可以同时读取和写入它。

© www.soinside.com 2019 - 2024. All rights reserved.