繁体   English   中英

任务并行库与本机线程同步

[英]Task Parallel library vs Native Thread Synchronization

这个问题可能是主观的,但是我只想知道何时使用TPL以及何时使用基于本机线程的同步(evnt,等待句柄)。

本地线程同步技术会过时吗?

谢谢

尽可能使用TPL,因为它是表达并行需求的一种更简洁,更具声明性的方式。

MSDN解释说: “ TPL动态扩展并发程度,以最有效地使用所有可用处理器。此外,TPL处理工作的分区,ThreadPool上的线程调度,取消支持,状态管理以及其他低级细节。通过使用TPL,您可以在专注于程序要完成的工作的同时,最大限度地提高代码的性能。”

另请参见http://www.albahari.com/threading/part5.aspx ,其中详细介绍了“数据并行”的好处和其他TPL的好处。

并行扩展非常适合并行执行小任务。 并行扩展确实提供了代码构造。 例如,ForEach替换了普通的foreach语句,但是将并行执行它。 这就是并行扩展所要使用的级别。

当您创建成熟的多线程应用程序(例如Web服务器)时,仍必须使用常规线程和同步。 当然,WCF和IIS已经为您解决了此类问题。

当然,线程池解决了中间问题。

任务并行库并非主要用于线程同步,它旨在简化更多任务。 TPL旨在促进以下步骤:

  1. 将其分成小块。
  2. 通过多线程并行执行这些块。
  3. 当结果可用时,以线程安全和高性能的方式整理结果。

而且只有第三项与线程同步有关。 当然,您仍然可以使用已知的线程同步原语以线程安全的方式执行整理结果(例如,当您应该自己整理此结果时,使用Parallel类)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM