静态字典的访问,在多线程环境下,存在一个并发控制问题。
因为项目中使用了静态字典,发现经常报已经添加了重复的键的异常,即使做了if(dic.Contains(key))的判断,就赋值的操作的,也不行。
就想到了并发的问题,所以就自己写demo试了一下,果然是缺少锁的问题,加一个lock锁就好了。
同时也意识到一个问题,只要是多线程环境,去访问一个共有的资源都存在并发的问题,这个我本来是知道这句话的,但是仅限知道罢了。
当然一个Dictionary也是一个资源。
静态字典的访问,在多线程环境下,存在一个并发控制问题。
因为项目中使用了静态字典,发现经常报已经添加了重复的键的异常,即使做了if(dic.Contains(key))的判断,就赋值的操作的,也不行。
就想到了并发的问题,所以就自己写demo试了一下,果然是缺少锁的问题,加一个lock锁就好了。
同时也意识到一个问题,只要是多线程环境,去访问一个共有的资源都存在并发的问题,这个我本来是知道这句话的,但是仅限知道罢了。
当然一个Dictionary也是一个资源。