none
非同期ライブラリ作成とTask.Runについて RRS feed

  • 質問

  • お世話になります。

    aync/awaitの勉強を始めています。

    https://www.infoq.com/jp/articles/Async-API-Design

    に記述されている、非同期ライブラリを作成するときに、Task.Runを使用するなとありますが、

    これの意味が分かりません。非同期に処理するように作成するライブラリなら、Task.Runを使ってもいいような気がしますが、
    たぶん私思っている意味と提示されている意味とは異なっていると思います。

    どう理解すべきかを教えてください。

    2016年9月9日 6:13

回答

  • ・非同期にするべきはCPUバウンドではなくIOバウンドの処理である(CPUバウンドを非同期にするのは利用者側の判断)

    ・IOバウンドの処理を非同期に実行するには、IO固有の非同期メソッドを使用するべき(そうでないなら利用者側が判断するべき)

    Task.Runはスレッドを使って非同期実行しますから、つまるところライブラリ側ではやるべきではないという感じだと思います。(Task.Runを使うかを判断するのは利用者側)

    ※最初のところちょっと読んだだけなので、きちんと読めばまた違うかもしれませんが

    • 回答の候補に設定 星 睦美 2016年10月20日 1:31
    • 回答としてマーク 星 睦美 2016年10月27日 7:22
    2016年9月9日 6:32