【发布时间】:2017-05-02 11:42:18
【问题描述】:
我对 IO Bound 操作有点困惑
基本上,我找不到 IO Bound 操作的最佳实践。
例如,我有一堆请求需要发送到远程服务器 20 个请求,我需要发送发布数据并等待响应检查该响应并将其写入日志。
问题是我应该使用什么?
我应该创建可以处理它的后台线程吗?
因为我不想在所有这些请求都完成时同步等待。部分原因是我不关心它们,它们只是一些日志等。
【问题讨论】:
-
您可以在项目中使用任务。
-
如果你想要异步然后使用
await/async。创建后台线程仍然会导致同步调用,它只是阻塞不同的线程。 -
使用线程使代码变得简单,因为您不必编写异步代码。简单的代码没有什么特别的错误,尤其是当你不得不问这个问题的时候。如果您想编写最佳 代码,那么关键是不要 有一个线程等待I/O 完成。但仅在 I/O 完成处理响应时使用一个。采用通常痛苦的 BeginXxx() 方法或不那么痛苦的 async/await 关键字。
标签: c# multithreading io