0

node.js、express、nowjsを使用してウェブサイト/アプリを構築しています。ユーザーが私のWebサイトにログインすると、(他のサービスに加えて)矢印キーを使用してスプライトを移動できます。i番目のユーザーのスプライトの位置はサーバー側に保持されます。

user[i] = { x : 0; y : 0 } 

スプライトの位置を更新するために、矢印キーがサーバーに送信されます。

E.g. user[5].x += 5.

2人のユーザーが同じ位置を共有することを望まない(「衝突」)。したがって、サーバーがキーを押すと、サーバー側の関数は、結果の座標が「ユーザー」配列の一部の座標と等しいかどうかを確認し、等しい場合は移動を無視します。

質問:2人のユーザーがまったく同時に座標に移動することを選択した場合、どのように処理しますか?私が正しく理解していれば、サーバー側の関数が同時に呼び出され、チェック時に誰もその座標のセットをまだ持っていないため、両方のユーザーが同じ座標になりますか?

または、2つのクライアントがサーバー側の関数を同時に呼び出すと(たとえば、nowjsを使用して)、1つの関数が常に次々に処理されるため、安全ですか?

4

2 に答える 2

3

node.jsはシングルスレッドであり、「同時に」何も起こりません。あなたは常に他の前に1つの動きがあります。

于 2012-05-26T20:31:06.417 に答える
1

node.jsのjavascriptコードは単一のスレッドで実行されるため、安全である必要があります。非同期ライブラリを使用して別のスレッドで衝突を計算している場合は、危険にさらされますが、それが起こっているようには聞こえません。

于 2012-05-26T20:31:22.217 に答える