c#中lock的使用
private object o = new object(); public void Work() { lock(o) { //做一些需要线程同步的工作 } }
说白了就是防止同一个操作被锁死的情况。比如说,日志的写入,或者文件的读取。当一个操作正在读取某一个文件的时候,另一个操作也需要读取某一个文件,导致第二个的操作就会报错。
这个时候就需要使用lock锁的使用。
lock锁就是当第一个操作正在读取某个文件的时候,第二个操作就只能等待读取某个文件。直到第一个操作读取完成,lock被释放之后才能读取。
说白了就是防止互相抢占资源的一个操作。
再说详细一点就是
1、第一个操作lock(o)时,就是说,我要做相对应的操作了,这时候,object o就有了一个标记,说我已经被锁住了
2、第二个操作的时候,看到object o被锁住了,就只能等待,直到第一个操作完成之后,o被释放了,然后第二个操作才能进行操作。
3、然后o就被第二个操作锁住了,如此类推。