CString :: LoadString()线程安全吗?

时间:2014-09-25 16:02:48

标签: c++ mfc

我正在实现一个多线程应用程序,它调用使用MFC编写的遗留应用程序中的模块。

当我只使用一个线程运行它时,我的代码运行得很好,但是如果我使用多个线程运行它,那么当CString::LoadString()调用AfxGetResourceHandle()时,我总是得到一个断言。调用LoadString()的字符串是本地字符串,因此根本不会共享。

如果我在CString::LoadString()一切正常之前添加互斥锁,但由于遗留应用程序的大小和此方法的常用,此解决方案很难实现并会降低应用程序的速度。< / p>

我查看了MS文档,它没有说明线程安全等等。

您对LoadString()和多线程环境有所了解吗?我的应用程序中的所有DLL都具有相同的字符集,它们都处于DEBUG模式,并且它们都使用MFC共享DLL。

1 个答案:

答案 0 :(得分:2)

通常,您只能从使用CWinThread创建的线程访问MFC对象。你没有提供你在辅助线程上得到的确切断言,但我猜你的“其他”线程是以其他方式创建的。有关MFC与多线程的详细信息,请参阅MSDN