[quote=引用 40 楼 wanghui0380 的回复:] ConcurrentQueue<T>
对的 ConcurrentQueue 是线程安全的,Queue 不是
Queue 是 FIFO 队列 Dequeue 方法,移除并返回位于 Queue 开始处的元素。 等价于 a = List[0]; List.RemoveAt(0); Enqueue 方法,向 Query 添加一个元素 等价于 List.Add Clear 方法,清空队列 等价于 List.RemoveAll
其实本该用 Queue 的
ConcurrentQueue<T>
[quote=引用 49 楼 h2041075 的回复:] [quote=引用 48 楼 xuzuning 的回复:] 对的 ConcurrentQueue 是线程安全的,Queue 不是
[quote=引用 48 楼 xuzuning 的回复:] 对的 ConcurrentQueue 是线程安全的,Queue 不是
实际上即使“幸好”程序不抛出异常,RemoveAt 语句最后的 this._items[this._size] = default(T);这条语句可能也会去给错误位置的单元赋值,而原来应该重新初始化的那个单元,还在引用这不该引用的对象。造成内存泄漏。 这就只有经常写测试程序的人才能及时发现了,而不写测试的人可能就总是在系统维护中去猜测了。
this._items[this._size] = default(T);
判断完之后,删除之前程序在做什么
110,533
社区成员
642,574
社区内容
加载中
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧