相关疑难解决方法(0)

C++线程,共享数据

我有一个应用程序,其中2个线程正在运行...当我从一个线程更改一个全局变量时,是否有任何证据,另一个会注意到这个变化?我没有任何同步或互斥系统......但是这段代码应该一直工作(想象一下名为dataUpdated的全局bool):

线程1:

while(1) {
    if (dataUpdated)
        updateScreen();
    doSomethingElse();
}
Run Code Online (Sandbox Code Playgroud)

线程2:

while(1) {
    if (doSomething())
        dataUpdated = TRUE;
}
Run Code Online (Sandbox Code Playgroud)

像gcc这样的编译器是否以不检查全局值的方式优化此代码,只在编译时考虑它的值(因为它会在同一个thred中更改)?

PS:对于类似游戏的应用程序而言,在写入值时是否会有读取真的无关紧要......重要的是这个更改会被其他线程注意到.

c++ multithreading synchronization mutex

28
推荐指数
4
解决办法
3万
查看次数

同步两个线程在彼此之间传递事件

我是Windows c ++编程的新手.请参阅下面的代码,我想让两个线程同步.第一个线程应该打印"Hello",然后将控件/事件传递给第二个线程.不知道怎么做.截至目前我正在使用Sleep(1000).但是,如果我不使用Sleep,则会导致未定义的行为.请帮忙...

#include <windows.h>
#include <process.h>
#include <iostream>

void thread1(void*);
void thread2(void*);

int main(int argc, char **argv) {
    _beginthread(&thread1,0,(void*)0);
    _beginthread(&thread2,0,(void*)0);
    Sleep(1000);
}

void thread1(void*)
{
    std::cout<<"Hello "<<std::endl;
}
void thread2(void*)
{
    std::cout<<"World"<<std::endl;
}
Run Code Online (Sandbox Code Playgroud)

c++ multithreading

0
推荐指数
1
解决办法
2163
查看次数

标签 统计

c++ ×2

multithreading ×2

mutex ×1

synchronization ×1