C# 多线程使用队列注意事项

问题:

多线程运行时死亡机问题很频繁!

 

推理:

看源码推理,发现 Queue<T>这样的泛型不是线程安全的.

 

验证:

将 Queue<T> 换成 Queue 类,并以 lock(Queue 类实体.SynRoot) { //todo } 这样的形式.后问题明显没有.

 

解决办法:

在入队出队时一定要加个锁.

lock(Queue 类实体.SynRoot) { //todo }

lock(泛型实体){ //todo }

posted @ 2013-12-10 15:46  科爷  阅读(1005)  评论(0编辑  收藏  举报