- 56 名前:デフォルトの名無しさん mailto:sage [2022/01/31(月) 19:28:57.02 ID:UHXhumHV.net]
- >>54
それはレイヤーが違う まずOSスレッドは何をしようが常にプリエンプティブ だからOSスレッド上で動いているタスクも途中で一時中断されたり再開されたりしうる だからといってタスクをプリエンプティブだと言わないのはタスクの階層で話をしているため タスクスケジューラに制御を戻さない限り他のタスクに切り替わらないため「プリエンプティブではない」と言われる 次にspawn_blockingで起動されるのもタスクの一つ だからタスクスケジューラが管理するスレッドの中で動く それがspawnだと一つのスレッドに対するキューに複数のタスクが割り当てられる 一方でspawn_blockingは一つのスレッドに対するキューにそのタスクのみが割り当てられる それだけの違いであり両者ともにタスクスケジューラの管理下にあるタスクである もちろん動作中も終了後もタスクとして同じ扱い つまりspawn_blockingはプリエンプティブにするものではない 同じタスクでありスタックレスなコルーチンであることも同じ >>55 その意見は成立していない
|

|