问题:

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

 

推理:

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

 

验证:

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

 

解决办法:

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

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

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

问题:

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

 

推理:

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

 

验证:

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

 

解决办法:

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

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

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

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-18
  • 2022-12-23
猜你喜欢
  • 2021-06-02
  • 2021-12-07
  • 2022-12-23
  • 2021-12-24
  • 2022-12-23
相关资源
相似解决方案