dotnet 在析构函数调用 ThreadLocal 也许会抛出对方已释放
source link: https://lindexi.gitee.io/post/dotnet-%E5%9C%A8%E6%9E%90%E6%9E%84%E5%87%BD%E6%95%B0%E8%B0%83%E7%94%A8-ThreadLocal-%E4%B9%9F%E8%AE%B8%E4%BC%9A%E6%8A%9B%E5%87%BA%E5%AF%B9%E6%96%B9%E5%B7%B2%E9%87%8A%E6%94%BE.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
dotnet 在析构函数调用 ThreadLocal 也许会抛出对方已释放
我在不自量力做一个数组池,就是为了减少使用 System.Buffers.dll 程序集,然而在数组池里面,所用的 ThreadLocal 类型,在我对象析构函数进行归还数组时,抛出了无法访问已释放对象
先来看第一个张图,亮点在于线程是 GC 终结器线程
调用堆栈是 ~ByteListMessageStream
函数,也就是 ByteListMessageStream 的 析构函数。代码如下
~ByteListMessageStream()
{
_sharedArrayPool.Return(Buffer);
}
在进行数组归还的时候,因为 ThreadLocal 已被释放,所在的线程也不存在。此时的访问将失败,如下图
请大家不要重复踩入此坑
本文会经常更新,请阅读原文: https://blog.lindexi.com/post/dotnet-%E5%9C%A8%E6%9E%90%E6%9E%84%E5%87%BD%E6%95%B0%E8%B0%83%E7%94%A8-ThreadLocal-%E4%B9%9F%E8%AE%B8%E4%BC%9A%E6%8A%9B%E5%87%BA%E5%AF%B9%E6%96%B9%E5%B7%B2%E9%87%8A%E6%94%BE.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
如果你想持续阅读我的最新博客,请点击 RSS 订阅,推荐使用RSS Stalker订阅博客,或者前往 CSDN 关注我的主页
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://blog.lindexi.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 。
无盈利,不卖课,做纯粹的技术博客
以下是广告时间
推荐关注 Edi.Wang 的公众号
欢迎进入 Eleven 老师组建的 .NET 社区
以上广告全是友情推广,无盈利
Recommend
-
38
重要说明 本文中提到的构造函数,在很多书中有其他的说法,如构造器,构造方法,初始化,初始函数等 本文中提到的析构函数,在很多书中有其他的说法,如反构造器,析构方法,反初始化,反初始函...
-
19
0、问题 和Synchronized的区别 存储在jvm的哪个区域 真的只是当前线程可见吗 会导致内存泄漏么 为什么用Entry数组而不是Entry对象 你学习的开源框架哪些用...
-
10
C++中有的类的析构函数为什么要定义成虚函数? 发表于 2020-05-11 19:05:00...
-
4
构造、析构期间被调虚函数发生的惨案 2020.05.30 Netcan 编...
-
8
V2EX › Python Python 类的析构函数的一些疑问,析构到底是和类绑定一起释放还是类释放以后调用的函数。
-
7
V2EX › 程序员 js 的类有没有析构函数,如何进行资源释放?? James369 · 1 天前...
-
7
dotnet C# 多次对一个对象调用构造函数会发生什么今天来玩一点变态的,使用反射获取到某个类型的构造函数,接着多次对此类型的某个对象调用构造函数方法。请问此时会发生什么 假定有一个类型 Foo 的定义如下 ...
-
5
C++类的析构函数什么情况下要写?不写析构函数好像也没事啊,系统都会自动生成,用delete()方法也能释放掉用new方法创建的对象内存,那么在什么情况下才要写析构函数呢?
-
4
C++——构造函数和析构函数 精选 原创 萌新的日常 2022-12-21 08:06:44...
-
6
2023-05-26:golang关于垃圾回收和析构函数的选择题,多数人会选错。 ...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK