由于我在某些时候使标志变得易失,因此标志的值应更改但是它只在t线程上无限等待

问题描述

#include <iostream>
#include<thread>
#include <initializer_list>
#include <vector>
#include <future>
#include <time.h>
using namespace std;
class Gadget{
public:
    Gadget(){
        flag_ = false;
        cout<<"Creating new Gadgets"<<endl;
    }
    void wait(){
        while(flag_==false){
            cout<<"waiting here...."<<endl;
            this_thread::sleep_for(chrono::milliseconds(1000));
        }
    }
    void wake(){
        flag_ = true;
    }
private:
    volatile bool flag_;
};

我正在尝试创建两个线程,并且在检查标志值后一个线程将休眠1秒钟。由于我使标志变得不稳定,所以它应该在某个时候改变。但是程序正在无限等待。

int main() {
    Gadget g;
    thread t(&Gadget::wait,g);
    thread s(&Gadget::wake,g);
    t.join();
    s.join();
    cout<<"Ending the program "<<endl;
    return 0;
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)