2.3.1 Parallel.For 43
2.3.2 Parallel.ForEach 49
2.3.3 从并行循环中退出 56
2.4 指定并行度 62
2.4.1 ParallelOptions 63
2.4.2 计算硬件线程 65
2.4.3 逻辑内核并不是物理内核 66
2.5 通过甘特图检测临界区 67
2.6 小结 68
第3章 命令式任务并行 69
3.1 创建和管理任务 70
3.1.1 System.Threading.Tasks.
Task 71
3.1.2 理解Task状态和生命周期 72
3.1.3 通过使用任务来对代码进行并行化 74
3.1.4 等待任务完成 80
3.1.5 忘记复杂的线程 81
3.1.6 通过取消标记取消任务 82
3.1.7 从任务返回值 88
3.1.8 TaskCreationOptions 90
3.1.9 通过延续串联多个任务 90
3.1.10 编写适应并发和并行的代码 95
3.2 小结 96
第4章 并发集合 97
4.1 理解并发集合提供的功能 98
4.1.1 System.Collections.
Concurrent 100
4.1.2 ConcurrentQueue 101
4.1.3 理解并行的生产者-消费者模式 104
4.1.4 ConcurrentStack 116