2

イベント ループが 1 つのプロセス (つまり、1 つのコア) で実行されることは理解していますが、そこからスレッドを起動するとどうなるか知りたいです。

uv_thread_createまたはで複数のスレッドを起動するuv_queue_workと、それらは複数のコアで実行されますか (利用可能な場合)?

(少なくともUnixでは)すべてが複数のコアにスケーリングできるpthreadsに基づいているため、そうしてくれることを願っていますが、わかりません。

また、私はモバイルにいるため、現在それを確認するためのコードを書くことができません。すでに答えを知っている人がいるかどうかを確認するために投稿しました。

ハッピーホリデー。

編集: テスト コードを作成し、すべてが単一のコアで実行されます。

4

1 に答える 1

3

これは実際にはカーネル次第ですが、一般に、コードを並列に実行できるように、各スレッドを異なるコア (複数ある場合) にスケジュールします。ただし、libuv は (uv_async_send を除いて) スレッドセーフではないことに注意してください。一度に複数のスレッドを実行している場合、一度イベント ループになると、ループ スレッドの外側から libuv 関数を呼び出すのは安全ではありません。

于 2015-01-09T09:38:21.090 に答える