0

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

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

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

谢谢

4

1 回答 1

0

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

于 2012-04-24T18:42:34.247 回答