返回首页
苏宁会员
购物车 0
易付宝
手机苏宁

服务体验

店铺评分与同行业相比

用户评价:----

物流时效:----

售后服务:----

  • 服务承诺: 正品保障
  • 公司名称:
  • 所 在 地:

  • 正版新书]并行编程实战:基于C# 8和.NET Core 3(印)沙克蒂·坦沃9
  • 全店均为全新正版书籍,欢迎选购!新疆西藏青海(可包挂刷).港澳台及海外地区bu bao快递
    • 作者: (印)沙克蒂·坦沃著 | (印)沙克蒂·坦沃编 | (印)沙克蒂·坦沃译 | (印)沙克蒂·坦沃绘
    • 出版社: 清华大学出版社
    • 出版时间:2021-07-01
    送至
  • 由""直接销售和发货,并提供售后服务
  • 加入购物车 购买电子书
    服务

    看了又看

    商品预定流程:

    查看大图
    /
    ×

    苏宁商家

    商家:
    君凤文轩图书专营店
    联系:
    • 商品

    • 服务

    • 物流

    搜索店内商品

    商品分类

    商品参数
    • 作者: (印)沙克蒂·坦沃著| (印)沙克蒂·坦沃编| (印)沙克蒂·坦沃译| (印)沙克蒂·坦沃绘
    • 出版社:清华大学出版社
    • 出版时间:2021-07-01
    • 版次:1
    • 印次:1
    • 字数:400000
    • 页数:320
    • 开本:16开
    • ISBN:9787302581826
    • 版权提供:清华大学出版社
    • 作者:(印)沙克蒂·坦沃
    • 著:(印)沙克蒂·坦沃
    • 装帧:平装
    • 印次:1
    • 定价:99
    • ISBN:9787302581826
    • 出版社:清华大学出版社
    • 开本:16开
    • 印刷时间:暂无
    • 语种:暂无
    • 出版时间:2021-07-01
    • 页数:320
    • 外部编号:小坞128227
    • 版次:1
    • 成品尺寸:暂无

    篇 线程、多任务和异步基础

    章 并行编程简介 3

    1.1 技术要求 3

    1.2 为多核计算做准备 4

    1.2.1 进程 4

    1.2.2 硬件和应用程序的性能 4

    1.2.3 多任务 4

    1.2.4 超线程 5

    1.2.5 Flynn分类法 6

    1.2.6 线程 7

    1.2.7 线程类型 7

    1.2.8 线程单元状态 7

    1.2.9 多线程 10

    1.2.10 Thread类 12

    1.2.11 使用Thread类的优缺点 16

    1.2.12 ThreadPool类 17

    1.2.13 使用ThreadPool的优缺点 19

    1.2.14 BackgroundWorker 20

    1.2.15 使用BackgroundWorker的优缺点 23

    1.2.16 多线程与多任务对比 24

    1.3 适用并行编程技术的场景 24

    1.4 并行编程的优缺点 25

    1.5 小结 26

    1.6 牛刀小试 26

    第2章 任务并行性 29

    2.1 技术要求 29

    2.2 任务 29

    2.3 创建和启动任务 30

    2.3.1 System.Threading.Tasks.Task类 31

    2.3.2 System.Threading.Tasks.Task.Factory.StartNew方法 32

    2.3.3 System.Threading.Tasks.Task.Run方法 33

    2.3.4 System.Threading.Tasks.Task.Delay方法 33

    2.3.5 System.Threading.Tasks.Task.Yield方法 34

    2.3.6 System.Threading.Tasks.Task.FromResult方法 36

    2.3.7 System.Threading.Tasks.Task.FromException和System.Threading.Tasks.Task.FromException方法 37

    2.3.8 System.Threading.Tasks.Task.FromCanceled和System.Threading.Tasks.Task.FromCanceled方法 37

    2.4 从完成的任务中获取结果 38

    2.5 取消任务 39

    2.5.1 创建令牌 40

    2.5.2 使用令牌创建任务 40

    2.5.3 通过IsCancellationRequested属性轮询令牌的状态 41

    2.5.4 注册请求取消的回调 42

    2.6 等待正在运行的任务 44

    2.6.1 Task.Wait 44

    2.6.2 Task.WaitAll 45

    2.6.3 Task.WaitAny 45

    2.6.4 Task.WhenAll 46

    2.6.5 Task.WhenAny 46

    2.7 处理任务异常 47

    2.7.1 处理来自单个任务的异常 47

    2.7.2 处理来自多个任务的异常 48

    2.7.3 使用回调函数处理任务异常 49

    2.8 将APM模式转换为任务 50

    2.9 将EAP模式转换为任务 52

    2.10 有关任务的更多信息 54

    2.10.1 后续任务 54

    2.10.2 使用Task.ContinueWith方法继续执行任务 54

    2.10.3 使用Task.Factory.ContinueWhenAll和Task.Factory.ContinueWhenAll继续执行任务 55

    2.10.4 使用Task.Factory.ContinueWhenAny和Task.Factory.

    ContinueWhenAny继续执行任务 56

    2.10.5 父任务和子任务 57

    2.10.6 创建一个分离的子任务 57

    2.10.7 创建一个附加的任务 58

    2.11 工作窃取队列 59

    2.12 小结 62

    2.13 牛刀小试 62

    第3章 实现数据并行 65

    3.1 技术要求 65

    3.2 从顺序循环到并行循环 65

    3.2.1 使用Parallel.Invoke方法 66

    3.2.2 使用Parallel.For方法 68

    3.2.3 使用Parallel.ForEach方法 69

    3.3 了解并行度 70

    3.4 在并行循环中创建自定义分区策略 72

    3.4.1 范围分区 73

    3.4.2 块分区 73

    3.5 取消循环 74

    3.5.1 使用Parallel.Break 75

    3.5.2 使用ParallelLoopState.St0p 76

    3.5.3 使用CancellationToken 77

    3.6 了解并行循环中的线程存储 79

    3.6.1 线程局部变量 79

    3.6.2 分区局部变量 80

    3.7 小结 81

    3.8 牛刀小试 81

    第4章 使用PLINQ 83

    4.1 技术要求 83

    4.2 .NET中的LINQ提供程序 84

    4.3 编写PLINQ查询 84

    4.3.1 关于ParallelEnumerable类 85

    4.3.2 编写第#一个PLINQ查询 85

    4.4 在并行执行时保持顺序 86

    4.4.1 使用AsOrdered()方法 87

    4.4.2 使用AsUnOrdered()方法 88

    4.5 PLINQ中的合并选项 88

    4.5.1 使用N0tBuffered合并选项 88

    4.5.2 使用AutoBuffered合并选项 89

    4.5.3 使用FullyBuffered合并选项 90

    4.6 使用PLINQ抛出和处理异常 92

    4.7 组合并行和顺序LINQ查询 94

    4.8 取消PLINQ查询 95

    4.9 使用PLINQ进行并行编程时要考虑的事项 97

    4.10 影响PLINQ性能的因素 97

    4.10.1 并行度 97

    4.10.2 合并选项 98

    4.10.3 分区类型 98

    4.10.4 确定是保持顺序执行还是转向并行 98

    4.10.5 操作顺序 98

    4.10.6 使用ForAll 99

    4.10.7 强制并行 99

    4.10.8 生成序列 99

    4.11 小结 100

    4.12 牛刀小试 100

    第2篇 支持.NET Core中并行性的数据结构

    第5章 同步原语 105

    5.1 技术要求 105

    5.2 关于同步原语 105

    5.3 互锁操作 106

    5.3.1 .NET中的内存屏障 108

    5.3.2 重新排序 108

    5.3.3 内存屏障的类型 109

    5.3.4 避免使用构造对代码进行重新排序 110

    5.4 锁原语 111

    5.4.1 锁的工作方式 111

    5.4.2 线程状态 111

    5.4.3 阻塞与自旋 113

    5.5 锁、互斥锁和信号量 113

    5.5.1 锁 114

    5.5.2 互斥锁 116

    5.5.3 信号量 118

    5.5.4 ReaderWriterLock 120

    5.6 信号原语 120

    5.6.1 Thread.Join 120

    5.6.2 EventWaitHandle 122

    5.6.3 AutoResetEvent 122

    5.6.4 ManualResetEvent 123

    5.6.5 WaitHandle 125

    5.7 轻量级同步原语 129

    5.7.1 Slim锁 129

    5.7.2 ReaderWriterLockSlim 130

    5.7.3 SemaphoreSlim 131

    5.7.4 ManualResetEventSlim 132

    5.8 屏障和倒数事件 133

    5.9 使用Barrier和CountDownEvent的案例研究 133

    5.10 SpinWait 136

    5.11 自旋锁 136

    5.12 小结 137

    5.13 牛刀小试 138

    第6章 使用并发集合 141

    6.1 技术要求 141

    6.2 并发集合详解 141

    6.2.1 关于IProducerConsumerCollection 142

    6.2.2 使用ConcurrentQueue 143

    6.2.3 使用队列解决生产者-消费者问题 143

    6.2.4 使用并发队列解决问题 145

    6.2.5 Queue与ConcurrentQueue性能对比 146

    6.2.6 使用ConcurrentStack 146

    6.2.7 创建并发堆栈 146

    6.2.8 使用ConcurrentBag 148

    6.2.9 使用BlockingCollection 149

    6.2.10 创建BlockingCollection 150

    6.3 多生产者-消费者应用场景 151

    6.4 使用ConcurrentDictionary 153

    6.5 小结 154

    6.6 牛刀小试 155

    第7章 通过延迟初始化提高性能 157

    7.1 技术要求 157

    7.2 延迟初始化概念简析 157

    7.3 关于System.Lazy 161

    7.3.1 封装在构造函数中的构造逻辑 161

    7.3.2 作为委托传递给Lazy的构造逻辑 162

    7.4 使用延迟初始化模式处理异常 163

    7.4.1 初始化期间没有异常发生 164

    7.4.2 使用异常缓存初始化时出现随机异常 164

    7.4.3 不缓存异常 166

    7.5 线程本地存储的延迟初始化 167

    7.6 减少延迟初始化的开销 169

    7.7 小结 171

    7.8 牛刀小试 172

    第3篇 使用C#进行异步编程

    第8章 异步编程详解 175

    8.1 技术要求 175

    8.2 程序执行的类型 175

    8.2.1 理解同步程序执行 176

    8.2.2 理解异步程序执行 177

    8.3 适合使用异步编程的情形 178

    8.3.1 编写异步代码 179

    8.3.2 使用Delegate类的BeginInvoke方法 179

    8.3.3 使用Task类 181

    8.3.4 使用IAsyncResult接口 181

    8.4 不宜使用异步编程的情形 183

    8.5 使用异步代码可以解决的问题 183

    8.6 小结 184

    8.7 牛刀小试 185

    第9章 基于任务的异步编程基础 187

    9.1 技术要求 187

    9.2 关于async和await关键字 187

    9.2.1 使用async和await关键字的原因 188

    9.2.2 异步方法的返回类型 191

    9.3 异步委托和Lambda表达式 192

    9.4 基于任务的异步模式 192

    9.4.1 编译器方法,使用async关键字 193

    9.4.2 手动实现TAP 193

    9.5 异步代码的异常处理 194

    9.5.1 返回Task并抛出异常的方法 194

    9.5.2 从try-catch块外部调用异步方法并且不带await关键字 194

    9.5.3 从try-catch块内部调用异步方法并且不带await关键字 196

    9.5.4 从try-catch块外部使用await关键字调用异步方法 198

    9.5.5 返回void的方法 199

    9.6 使用PLINQ实现异步 200

    9.7 衡量异步代码的性能 201

    9.8 使用异步代码的准则 203

    9.8.1 避免使用异步void 204

    9.8.2 使用异步连锁链 204

    9.8.3 尽可能使用ConfigureAwait 205

    9.9 小结 205

    9.10 牛刀小试 205

    第4篇 异步代码的调试、诊断和单元测试

    0章 使用Visual Studio调试任务 209

    10.1 技术要求 209

    10.2 使用Visual Studio 2019进行调试 209

    10.3 如何调试线程 210

    10.4 使用并行堆栈窗口 212

    10.4.1 使用并行堆栈窗口进行调试 213

    10.4.2 线程视图 213

    10.4.3 任务视图 215

    10.4.4 使用并行观察窗口进行调试 216

    10.5 使用并发可视化器 217

    10.5.1 利用率视图 219

    10.5.2 线程视图 219

    10.5.3 核心视图 220

    10.6 小结 220

    10.7 牛刀小试 221

    10.8 深入阅读 222

    1章 编写并行和异步代码的单元测试用例 223

    11.1 技术要求 223

    11.2 使用.NET Core进行单元测试 224

    11.3 了解编写异步代码的单元测试用例的问题 226

    11.4 编写并行代码和异步代码的单元测试用例 228

    11.4.1 检查成功的结果 229

    11.4.2 检查除数为0时的异常结果 229

    11.5 使用Moq模拟异步代码的设置 230

    11.6 使用测试工具 232

    11.7 小结 233

    11.8 牛刀小试 233

    11.9 深入阅读 234

    第5篇 .NET Core附加的并行编程功能

    2章 ASP.NET Core中的IIS和Kestrel 237

    12.1 技术要求 237

    12.2 IIS线程模型 237

    12.2.1 避免饥饿算法 238

    12.2.2 爬山算法 238

    12.3 Kestrel线程模型 239

    12.3.1 ASP.NET Core 1.x 241

    12.3.2 ASP.NET Core 2.x 241

    12.4 微服务中线程的#佳实践 242

    12.4.1 单线程单进程微服务 242

    12.4.2 单线程多进程微服务 243

    12.4.3 多线程单进程微服务 243

    12.4.4 异步服务 243

    12.4.5 专用线程池 243

    12.5 在ASP.NET MVC Core中使用异步 245

    12.5.1 创建异步Web API 245

    12.5.2 异步流 248

    12.6 小结 251

    12.7 牛刀小试 251

    3章 并行编程中的模式 253

    13.1 技术要求 253

    13.2 MapReduce模式 253

    13.2.1 映射和归约 253

    13.2.2 使用LINQ实现MapReduce 254

    13.3 聚合 257

    13.4 分叉/合并模式 258

    13.5 推测处理模式 259

    13.6 延迟模式 260

    13.7 共享状态模式 263

    13.8 小结 263

    13.9 牛刀小试 264

    4章 分布式存储管理 265

    14.1 技术要求 265

    14.2 分布式系统简介 265

    14.3 共享存储模型与分布式存储模型 267

    14.3.1 共享存储模型 267

    14.3.2 分布式存储模型 268

    14.4 通信网络的类型 270

    14.4.1 静态通信网络

    ……

    附录

    沙克蒂·坦沃是Techpro Compsoft Pvt Ltd(一家优选信息技术咨询提供商)的首席执行官。他是一名技术推广人员和软件架构师,在软件开发和企业培训方面拥有超过15年的经验。Shakti是一名Microsoft认证培训师,并且一直与Microsoft合作在中东地区开展培训。他的专业领域包括.NET、Azure机器学习、人工智能、纯函数式编程的应用和并行计算等。

    "《并行编程实战:
    基于C# 8和.NET Core 3》详细介绍了C#和.NET Core并行编程技巧,阐释了多核计算、多任务、超线程、线程池和并行编程的重要概念以及现代并行编程结构,并通过实例演示了如何实现任务并行性,以有效利用CPU资源和提高程序性能。
    本书还介绍了数据并行性、PLINQ支持、支持.NET Core中并行性的数据结构、同步原语、.NET Core中可用的并发集合、延迟初始化等概念,讨论了适合使用异步编程的情形和不宜使用异步编程的情形,以及如何利用.NET Core中的新结构(async和await关键字)来实现异步代码。
    "

    售后保障

    最近浏览

    猜你喜欢

    该商品在当前城市正在进行 促销

    注:参加抢购将不再享受其他优惠活动

    x
    您已成功将商品加入收藏夹

    查看我的收藏夹

    确定

    非常抱歉,您前期未参加预订活动,
    无法支付尾款哦!

    关闭

    抱歉,您暂无任性付资格

    此时为正式期SUPER会员专享抢购期,普通会员暂不可抢购