临界资源加锁的问题
有多个线程操作临界资源i,若所有线程只去读取i,则不需要加锁;若有2个以上的线程写i(例如 i++ ,i--, i=5等),则对i操作需要加锁;若只有一个线程写i,其它的线程读i,那需不需要加锁啊???
[解决办法]
为了防止脏读,只要有写进程,就需要加锁。
同样的,当有进程在读的时候,新的写进程也需要等待。
具体的可参考数据库中的共享锁和独占锁。
[解决办法]
需要加锁,尤其是在多核环境里,如果读线程比较多而写线程比较少,可以试试读写锁,比一般锁性能要好
[解决办法]
要加读锁。
[解决办法]
不加锁应该会出现问题的吧。。比如一个读进程读取了一个数,然后写进程将这个数改了,读进程再读的时候就和之前的值不一样了。。。。