线程更改变量值并查看其外部的更改

时间:2012-04-24 18:08:23

标签: c++ multithreading

我创建了一个调用函数来更改变量值的线程,但是当它完成时,值不再被更改。

它只是一个例子,它不是真正的代码。

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,但我尝试使用我的字符串变量,它不起作用。

由于

1 个答案:

答案 0 :(得分:0)

如果在多个线程之间共享command,那么您需要一个CriticalSection(或您喜欢的任何喜欢的锁定机制)来保护对它的所有读/写访问。否则,cout可能会打印垃圾,没有任何内容,格式化您的硬盘,谁知道什么,因为THREAD1可能同时写入command