我有一个类MainWindow
,它在一个线程
中打开一个server
函数,我需要在主线程和子线程之间共享一个bool变量
,我尝试使用volatile变量
,但它不起作用,这是代码:
//Constructor
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//Some initialisation
...
// Constructs the new thread and runs it. Does not block execution.
bool_Server = true;//Variable supposed to be shared
m_t1 = std::thread(lancerServeur, bool_Server);
}
MainWindow::~MainWindow()
{
delete ui;
bool_Server = false; //Variable supposed to be shared
m_t1.join();
}
void MainWindow::lancerServeur(bool boolServer){
serveur s;
while(boolServer){
s.receiveDataUDP();//Read data in non blocking mode
}
}
易失变量是共享的吗?
std::thread(lancerServeur, std::ref(bool_Server))
,并将bool_Server
设置为std::atomic<bool>
或使用互斥锁等方法解决该问题。 - Simple