精易论坛

标题: 【开源】c#线程安全的List,一比一复刻版 [打印本页]

作者: 叮小当    时间: 2024-9-20 12:32
标题: 【开源】c#线程安全的List,一比一复刻版



前言:
1. c#有线程安全的队列,有线程安全的字典,有线程安全的集合bag,但唯独没有线程安全的List,很多人会说,字典就足够了,没必要用list。其实线程安全的字典,只在 key value 这一层是安全的,如果 value 是个list 或者 其他不支持线程安全的集合,那么 当你多线程改写 同一个 value 时,一样会导致竞态致使数据混乱。

2. list有很多功能是字典无法取代的,比如 linq语法的 any,find,findAll,where,select,removeAll,还有 sort 排序。

以上就是我制作这个 线程安全的list 由来。

为了适配以前的代码,我直接封装了c#原版list,并扩展了所有list功能的线程安全特性,你可以方便使用它,不需要更改你的代码,并且可以快捷的在list 和 safelist 之间转换。
除了类型命名不同,其他使用方法与原版list完全一致。你现在可以安全的在多线程中使用list的所有功能,而不需要为线程安全考虑。
内部通过读写锁互相升级的方式,保证了集合在多线程下的安全修改和读取。

本代码经过了几个月的线上游戏测试,目前稳定运行中。。。

源码如下:


作者: gaoqing    时间: 2024-9-20 12:47
谢谢分享
作者: 不苦小和尚    时间: 2024-9-20 13:01
谢谢分享,不错不错
作者: Siempre    时间: 2024-9-20 14:33

作者: zxxiaopi    时间: 2024-9-20 14:36
感谢分享
作者: kugua5201    时间: 2024-9-20 15:01
这是个好东西用起来
作者: dzscuz    时间: 2024-9-20 15:13
有线程安全的字典,有线程安全的集合bag
作者: 大胜科技    时间: 2024-9-20 16:46
有咩有使用例子啊
作者: 叮小当    时间: 2024-9-20 16:50
大胜科技 发表于 2024-9-20 16:46
有咩有使用例子啊

与c#原版list用法相同
作者: 2995455338    时间: 2024-9-20 18:46
9666666666666666
作者: 文西哥    时间: 2024-9-20 20:30
大佬就是大佬,学习一下
作者: function888    时间: 2024-9-21 09:04
c#线程安全的List,一比一复刻版
作者: 2101726857    时间: 2024-11-27 12:51
c# 线程安全的list 类似的就是ConcurrentBag<T> 类
作者: zhangyazhou123    时间: 2024-12-5 17:19
6666支持6666支持6666支持6666支持6666支持




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4