对于多数任务,通过将执行请求以线程池线程的方式排队,可以降低复杂性。 

死锁和争用条件

  多线程处理解决了吞吐量和响应性问题,但引入此功能会带来新的问题:死锁和争用条件。

死锁

两个线程都不能继续执行。

Monitor.TryEnter。

争用条件

多次运行程序会产生不同的结果,并且无法预测任何给定运行的结果。

Interlocked.Increment),可以轻松避免这种争用条件。

一般性建议

  使用多线程时需考虑以下准则:

  • Thread.Abort 终止其他线程。 
  • Thread.Resume 同步多个线程的活动。
  • 不要从主程序中控制工作线程的执行(如使用事件)。
  • 不要将类型用作锁定对象。 
  • 锁定实例时要谨慎。
  • 请务必针对需要不同资源的任务使用多线程,避免向单个资源指定多个线程。
  • Interlocked 类的方法,而不是 lock 语句(Visual Basic 中的 SyncLock)。 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-06-09
  • 2022-01-26
  • 2021-11-29
  • 2021-12-02
猜你喜欢
  • 2022-01-23
  • 2022-12-23
  • 2021-10-23
  • 2021-05-22
  • 2021-11-29
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案