2012-07-18 78 views
1

我有一個小的C++ DLL有2個回調函數從另一個DLL檢索信息。多線程C++的dll全局變量導致崩潰

這兩個回調函數在多個線程中被重複調用。

它們都將信息添加到相同的全局Cstring變量。

我有另一個函數,使用此DLL的程序將調用讀取此變量。

這種情況很少見,但有時會發生崩潰,而且肯定是由於這個全局變量被兩個不同的函數同時讀取/寫入。

我對多線程不是很有經驗,所以我不知道該怎麼做。

有什麼建議嗎?

這裏是一個前面的問題,我發佈了關於同一個問題多一點信息..(和一些代碼)。 其中一位用戶協助我確認這是一個多線程問題,我們沒有得到比這更多的東西。

C++ DLL crash (reading/writing crash related I think)

+0

'它們都將信息添加到相同的全局Cstring變量' - 爲什麼?你不能改變你的設計,這樣操作就會消失嗎? – 2012-07-18 17:24:37

+0

廢話,對不起,我錯了。回調函數都將信息添加到不同的全局cstrings。 但是,由於這些函數在多個線程中運行,有時函數1同時被稱爲一堆。 另一個被調用的函數有時會讀取這兩個變量。 – user1088794 2012-07-18 18:10:45

回答

0

你必須創建此變量的一個關鍵部分。在Windows中,您可以使用Mutex Objects來完成。

+0

感謝您的回答,我會研究這一點。 – user1088794 2012-07-18 18:11:58