Bal*_*an웃 0 c# asynchronous task-parallel-library async-await
为什么MemoryStream.ReadAsync正在使用任务,即使代码没有任何async或await。我确信async在这里使用不会带来任何性能提升,因为它不是 I/O 操作,而是内存中操作。
看起来好像使用了一些缓存,但它们仍然调用同步读取方法
Read(buffer, offset, count)
Run Code Online (Sandbox Code Playgroud)
那么这里的任务有什么用呢?
这里的任务有什么用呢?
基本类型Stream早于TAP。当异步方法添加到 BCL 时,流是一个明显的选择(异步代码非常适合 I/O 操作)。因此,决定将ReadAsync(和朋友)添加到基本Stream类型中。
但是,向后兼容性(一如既往)必须是优先考虑的事项。因此,基Stream类必须包含一个实现;不可能abstract。基Stream类将包装BeginRead/EndRead方法(如果派生类型实现APM),或者仅调用Read线程池线程。
MemoryStream- 因为它知道它只是处理内存缓冲区 -覆盖此默认线程池行为以仅同步。
| 归档时间: |
|
| 查看次数: |
613 次 |
| 最近记录: |