第06章-并行编程.ppt

6.4.1 Parallel.Invoke方法 6.4.2 任务调度 1.默认的调度程序 (1)ThreadPool的全局队列和本地队列 每个线程池都有一个全局队列,该队列负责按先进先出(FIFO)方式将顶级任务(即不是在另一个任务的上下文中创建的任务)添加到该队列中进行排队。添加到全局队列中的任务默认会安排到不同的多个可用处理器(多核处理器)上去执行。 对于子任务或者嵌套任务,这些任务都将放入一个按后进先出(LIFO)方式操作的本地队列中,此时该队列的“父任务”是指在该线程的父级线程上执行的线程。这样做的好处是既可以保留缓存的资源位置,又能减少资源的争用情况。 (2)工作窃取 6.4.2 任务调度 2.自定义任务调度程序 (1)TaskCreationOptions枚举 None AttachedToParent DenyChildAttach HideScheduler LongRunning PreferFairness (2)长时间运行的任务 6.4.2 任务调度 3.任务工厂 TaskFactory类和TaskFactoryTResult类 6.4.2 任务调度 3.任务工厂 任务工厂的设计思路是用基于事件的异步编程技术去解决各种应用程序中的冲突和兼容性问题,而不是用基于任务的异步模式去实现的。 从.NET框架4.5开始,凡是任务工厂提供的功能,建议都

文档评论(0)

1亿VIP精品文档

相关文档