我创建了一个调用函数来更改变量值的线程,但是当它完成时,值不再被更改。
它只是一个例子,它不是真正的代码。
THREAD1:
if(size = socket.recv(data))deserializeData(data)
deserializeData(){
//Deserialize the data (csv format) and then copy to command
command = tmp;
}
Outside the thread
cout << command
在线程内部和deserializeData,如果我调用它正确显示的命令,但在我做cout时它没有显示任何内容。
我看到了volatile,但我尝试使用我的字符串变量,它不起作用。
由于
答案 0 :(得分:0)
如果在多个线程之间共享command
,那么您需要一个CriticalSection(或您喜欢的任何喜欢的锁定机制)来保护对它的所有读/写访问。否则,cout
可能会打印垃圾,没有任何内容,格式化您的硬盘,谁知道什么,因为THREAD1可能同时写入command
。