0

私が考えていた紛らわしい質問があります。私のアプリケーションの良い日のシナリオではalgorithmparallel. しかし、このすべての取り組みに入る前に、この場合にそれが可能かどうか、それとも単なる夢物語かどうかを知りたい.

スピードアップ (ウィキペディア、2011)

この質問の目的のために、5 人のユーザー ( User A, User B, User C, User D and User E。これらは、スレッドのメタファーではなく、ユーザー名/パスワードでログオンする人々)SYSTEMが処理する経由セッション内にログオンしているとしましょうCookies

長さ 1000 × 1000 の台形を計算するようにサーバーに要求を送信するとしますUser A(システムはこの要求を 4 つのセクションに分割し、各セクションをコアに送信します)。ここで、この質問の目的のためにUser B、同時にログオンしUser A、システムに異なる長さの台形を計算するように要求を送信したとしましょう (そして、システムはそれをサーバーのコアに分割します)。 )。

私の簡単な理解から、このシナリオは単一のユーザーで明らかに可能ですが、複数のユーザーが同時にシステムにアクセスする (そしてシステムにリクエストを同時に処理させる) ことは可能ですか? これを処理するためにJavaプログラムをうまく書くことができますか? または、 と の間でbottle neck何か他のことが発生しますか(システムからのリソースを競合するため) ??? インスタンス化されたさまざまなオブジェクトで大量のデータを処理するための同時実行性は、Web ベースの製品でどのように処理するのが最適ですか?User AUser BUserlinear algorithmsparallel algorithms

4

1 に答える 1

0

複数のスレッドが共有データに同時にアクセスすると、競合状態が発生します。デッドロックは、複数のスレッドが競合する順序でリソースをロックするときに発生します。

これらはマルチスレッド環境では常に可能ですが、何千ものシステムが同様の機能を備えています。下の[回答を投稿]ボタンをクリックすると、SOは複数のユーザーからの回答で質問を更新します。競合状態のためにゴミは見られませんか?

アルゴリズムを疑似コーディングし、並行性を実現できる場所を確認することでメリットが得られます。これを行う1つの方法は、ローカル変数やスレッドローカル変数など、スレッド専用のデータを使用することです。もう1つは、共有データを使用するコードの(小さな)セクションを識別し、ロック構造を使用してそれらが並行して実行されないようにし、残りのコードを並行して実行できるようにすることです。

于 2013-01-11T02:13:58.383 に答える