2010-08-15 82 views
0

我正在阅读Joe Albahari的并行扩展优秀article。他说,并行扩展和锁定 - C#

利用多内核是容易 大多数服务器应用程序,其中每个 线程可以独立处理 单独的客户端请求,但在桌面上更难 - 因为它通常 要求你把你的 计算密集型代码和做 如下:

  1. 划分成小块。
  2. 通过多线程并行执行这些块。
  3. 以线程安全和高性能方式列出可用结果。

虽然你可以做到这一切与 经典的多线程结构, 它的尴尬 - 特别的步骤划分和整理的 。 A 更进一步的问题是,线程安全的锁定策略 会在许多线程同时对同一数据工作时引发很多争用。

PFX库已经专门设计了 以帮助在这些 的情况。

我想知道PFX如何减少此争议?

AFAIK,线程由操作系统管理,操作系统负责提供和释放锁。像PFX这样的其他东西都是抽象的,它处理好锁定并尝试用非常小的锁定来完成这项工作。我想这是可能的,甚至直接操纵线程并仔细锁定以避免争执。

这是正确的吗?或者有没有更好的方式来执行线程安全操作,而不使用锁?

回答

1

很多工作都进入了PFX的分区,并且还增强了ThreadPool的工作队列。在这两者之间,消除了很多争用(与标准的共享生产者/消费者队列方法相比)。