请问有没有一个lock,可以仅在写的时间锁定,读的时间不需要锁定

zpc38368330 2017-04-27 11:02:26
我有一个全局静态list变量,因多线程使用与修改,所以需要锁定,
锁定时,我希望仅在写的时间锁定,而不是在读的时间锁定.因为读的时间锁定的话每个线程都要排队等待,
具体逻辑如下:
public static List<string> m_list;
public staitc object o=new object();
//写时
lock(o)
{
m_list.clear();
m_list.Add(.....);
......
}
//读时
lock(o)
{
int count= m_list.Count();
.//...相关操作.等等....
}
我想仅在写的时间进行锁定,当各线程进行读的时间,没有必要再用lock(o)锁一次,能不能仅需判断下是否被锁了,如果被锁则不执行读的操作,如果没有被锁,则执行,而没有必要,每次读的时间都再进行一次锁定,耽误各线程的时间.
...全文
134 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 2017-04-27
  • 打赏
  • 举报
回复
ReaderWriterLockSlim
zpc38368330 2017-04-27
  • 打赏
  • 举报
回复
百度了,先是各种广告 然后各种lock 而且各种lock如同代码for(int i=0;i>1;i--) lock=lock;全是千篇一律.
john_QQ:2335298917 2017-04-27
  • 打赏
  • 举报
回复
请百度读写锁
cheng2005 2017-04-27
  • 打赏
  • 举报
回复
就按照楼主给的代码,这种读写操作,不加锁就有可能出错。

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧