两个线程。一个线程对于这个实例写操作(改变这个实例的某些属性值)
一个线程对于这个实例读操作(读这个实例的某个属性值)
问题一:
那么,如果我就这样,不进行lock的话,会不会出现两个线程同时写/读而出现冲突?(即使几率很低)
问题二:
那么如果我lock的话,lock第一个线程的写方法,lock第二个线程的读方法,结果是:当正在执行第一个线程的写方法时, 第二个线程的读方法由于无法读取这个实例而被阻塞,直到这个实例被第一个线程写完。
不知道我这样理解的对吗?因为我看网上几乎所有例子都是多个现成共同执行同一段代码,所以只lock一个方法。
就算你LOCK不代表读线程就能读到最新数据,CPU是有缓存的。当然并发频率不高是没问题的。
bu用读到最新数据,就是说不lock的话有效几率会出现问题,那我这么lock的方式对吗
@猝不及防:
1.冲突读写并没有问题,不会出错。如果你不要求最新数据的话无所谓的。
2.理解没毛病,建议读写锁ReaderWriterLockSlim
内存是满足可读可写的,同时读写本身是不存在问题的。
这个冲突取决于你所认为 ——
比如写了一半,但读可判断,可抛弃或其他;
na如果是同时写的话,我第二个问题的理解有问题吗