gpt4 book ai didi

.net - 使用 __declspec(thread) 的线程本地存储在 C++/CLI 中失败

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:09:21 24 4
gpt4 key购买 nike

我正在开发一个项目,我们通过 C++/CLI 层混合 .NET 代码和 native C++ 代码。在此解决方案中,我想通过 __declspec(thread) 声明使用线程本地存储:

__declspec(thread) int lastId = 0;

但是,在第一次访问变量时,我得到一个 NullReferenceException。更准确地说,声明是在 ref 类(用 C++/CLI 实现的 .NET 类)中完成的。

我已经阅读过有关 __declspec(thread) 不适用于延迟加载的 DLL 的内容。如果我使用 .NET,是否会自动使用延迟加载的 DLL?

最佳答案

似乎 __declspec(thread) isn't supported by CLR .

请记住,.net 线程不一定是 native 线程,but can be also fibers ,因此线程的标准 API 不适用于它们。

如果您有一个托管类,那么您应该为 thread local storage 使用托管线程 API。 .

关于这种差异有很多文章。这只是为了帮助您入门。

提示:您可以使用 ThreadStatic 属性而不是 TLS 来改进 performance .如果您正在使用 ASP.NET 应用程序,则需要记住 some things关于 TLS。

关于.net - 使用 __declspec(thread) 的线程本地存储在 C++/CLI 中失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/224777/

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