gpt4 book ai didi

c++ - CString::LoadString() 是线程安全的吗?

转载 作者:行者123 更新时间:2023-11-30 04:00:54 25 4
gpt4 key购买 nike

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

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

如果我在 CString::LoadString() 之前添加一个互斥锁,一切都会正常,但由于遗留应用程序的大小和此方法的普遍使用,此解决方案将难以实现并且会降低应用程序的速度。

我查看了 MS 文档,其中没有提及线程安全等内容。

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

最佳答案

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

关于c++ - CString::LoadString() 是线程安全的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26043099/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com