【发布时间】:2013-08-23 06:20:44
【问题描述】:
我的程序有 2 个线程和一个整数全局变量。假设在 thread2 开始执行之前将全局变量初始化为某个值。两个线程都在读取该变量。是否有任何竞争条件?
这些函数在我的程序中同时从 2 个线程重复执行。
void thread1(int iParam)
{
if ( gi_Varable == iParam )
//do something
}
void thread2(int iParam)
{
if ( gi_Varable == iParam)
//do something
}
【问题讨论】:
-
是的,全局变量是线程之间共享的,但是如果
gi_Varable被某个线程修改,你会发现代码有bug,你似乎没有 -
阅读Thread can't count, giving wrong result 了解使用全局变量时何时存在竞争条件和错误。以及如何通过添加并发控制机制来解决。
标签: c++ c multithreading thread-safety mutex