我有一個運行兩個不同操作的程序,我想在它們之間共享變量。C++,如何在進程或線程之間共享數據
目前,我使用線程而不是fork進程,但即使我將它們聲明爲volatile,我在共享變量時也遇到了問題。
我試着用升壓做:
boost::thread collisions_thread2(boost::bind(function_thread2);
通過聲明的共享變量波動,但似乎function_thread2()函數是無法看到的共享變量的變化。
我希望做的是一樣的東西:
thread1:
while(true){
//..do somet stuff
check variable1
}
thread2:
while(true){
do some other stuff
check and write on variable1
}
您能否提供我一個教程或在線程之間輕鬆共享變量的方法? 可能是boost庫在這種情況下可能有用嗎? 你認爲使用fork()更好嗎?
我知道我必須使用互斥鎖才能避免危急情況,但我從來沒有使用它。
檢查[這個問題](http://stackoverflow.com/questions/118199/c-thread-shared-data)幫助。最終[Boost Thread Synchronization](http://www.boost.org/doc/libs/1_49_0/doc/html/thread/synchronization.html) – jweyrich 2012-02-29 19:11:27
volatile與線程無關 – 2012-02-29 19:12:04
你甚至不需要' volatile「來分享變量。全局變量默認共享。但這是一件壞事,因爲它使創建數據競賽變得容易。當你有數據競賽時,你不能指望你的程序行爲合理,所以你可能會遇到一些這樣的情況。你需要發佈更多的真實代碼來獲取診斷數據競賽的幫助。 – bames53 2012-02-29 19:16:39