我在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