我在Windows(Win32,C/C++)上使用Scintilla編輯控件。該控件在WndProc中創建。我有第二個線程,使用Boost.Thread創建,充當拼寫檢查器,並用紅色的錯誤拼寫錯誤地拼寫單詞。因此,我有兩個線程改變了Scintilla控件的內容。Scintilla和線程安全
起初,編輯文本時程序崩潰。所以我研究了Scintilla的線程安全性。我找到的資料很少,但我設法得到這個引用文檔中:
直接調用會導致如果從不同的線程 的Scintilla的 窗口的本地線程執行 問題,在這種情況下 的SendMessage( hSciWnd,SCI_ *,wParam, lParam)應該用於同步 與窗口的線程。
當然,我使用直接調用,因此我將拼寫檢查線程中的所有調用更改爲SendMessage,現在程序不再崩潰。 最後,這就是問題,我解決了這個問題,還是我會遇到其他與Scintilla和多線程的怪癖?
retagged boost.thread to boost-thread與其他boost庫標籤一致 – rcollyer 2010-05-06 14:12:15