3

シングル スレッド サーバーであることを node.js 関連の Web ドキュメントで読み取ります。そのため、デフォルトですべてのデータ構造がノードサーバーでスレッドセーフであるかどうかがわかりません!

次のようなグローバル オブジェクトにアクセスする複数のコールバックがあります。

callback1{
global_var['key'] = val;
}

callback2{
globalv_var['key'] = val;
}

「キー」は同じ場合もあれば、異なる場合もあります。global_var はスレッドセーフになりますか? コールバックは、意図したとおり、特定の順序ではなく、何かが完了したときにコールバックされます。

4

2 に答える 2

3

Node.JS には「ディスパッチャ」が含まれています。Web 要求を受け入れ、非同期処理のためにそれらを渡します。そのディスパッチャーはシングルスレッドです。しかし、ディスパッチャーはタスクごとに新しいスレッドをスピンアップし、すぐにタスクを新しいスレッドに渡し、ディスパッチャーのスレッドを解放して新しいリクエストを処理できるようにします。

これらのタスク スレッドが分離されている (つまり、互いの状態を変更しない) 限り、はい、それらはスレッド セーフです。

于 2013-07-30T05:17:11.413 に答える
3

node.js アプリケーションの場所用に記述したすべての JavaScript は、単一のスレッドで実行されているかのように実行されます。

マルチスレッド化は、I/O コードやその他のネイティブ モジュールで、舞台裏で発生します。そのため、アプリケーション コードのスレッド セーフについて心配する必要はありません。

于 2013-07-30T06:31:34.933 に答える