请问有没有一个lock,可以仅在写的时间锁定,读的时间不需要锁定
我有一个全局静态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)锁一次,能不能仅需判断下是否被锁了,如果被锁则不执行读的操作,如果没有被锁,则执行,而没有必要,每次读的时间都再进行一次锁定,耽误各线程的时间.