【发布时间】:2021-03-17 09:42:30
【问题描述】:
考虑以下人为的例子-
假设我有一个修改全局变量的线程:
void thread_1(void* param) {
for (int i=0; i<10; i++) {
x += i; // x is global.
}
}
假设我有另一个线程修改相同的全局变量:
void thread_2(void* param) {
while (1) {
x = 0; // x is global.
usleep(20000);
}
}
如何暂停第二个线程的执行以等待第一个线程完成执行以安全地在第二个线程中继续执行以防止发生争用条件?
【问题讨论】:
-
使用pthread屏障linux.die.net/man/3/pthread_barrier_init
-
你介意提供一个例子吗?
标签: c windows unix thread-safety pthreads