問題タブ [concurrent-programming]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 値による ConcurrentDictionary の並べ替え
次のように値で ConcurrentDictionary を並べ替えることができます。
並べ替えられたアイテムの結果リストを受け取るだけでなく、辞書自体を効果的に並べ替えて、並べ替えられた新しいリストを辞書として設定したいことを除けば、これは素晴らしいことです。
私はこのようなことをしようとしましたが、運がありませんでした - 辞書はまだ順不同です:
それをしても辞書には影響がないようです。また、OrderBy の結果を新しい var にキャストしてみましたが、デリゲートに影響を与える可能性はあるものの、まだうまくいかない可能性があると考えています。
この ConcurrentDictionary を並べ替えてから、辞書を OrderBy から並べ替えられた結果に強制するにはどうすればよいですか?
c - 複数のプロセスで共有されるデータ構造を実装することは実用的ですか?
共有(同時)データ構造についてかなりグーグルで検索しましたが、
これらはすべて、プロセスではなくスレッドで共有されているようです。
たとえば、共有ハッシュ テーブルを考えてみましょう。
複数のプロセスで共有として実装する場合、
テーブルのすべてmalloc
または同等の呼び出しは、などに置き換える必要がありますshmget
。
しかし、私はそのような例を見ていません。
複数のプロセスで共有されるデータ構造を実装することは実用的ですか?
そのような例が見つからないという事実は、それが非現実的であることを意味しますか?
rest - 大きなS3バケット内のすべてのキーをリストするマルチスレッドの可能なアルゴリズムは?
多数のキーを含む S3 バケットでは、REST API を介してキーを一覧表示するプロセスが非常に遅くなります。
- 一度にリストできるキーは 1000 個までです。
- (私が知る限り) 5001 番目のキーを特定する唯一の方法は、最初の 1000 個のキーをリストし、応答の次のマーカーに基づいて次のキーをリストし、5001 に到達するまで再帰することです。
- S3 REST API リクエストのレイテンシーは非常に高く、通常、1000 個のキーのリクエストには数秒かかります。
100 個の同時キー リスト REST 要求を作成しても個々の要求が遅くなることはないため、そうでなければ、このプロセスは並列化による最適化の機が熟します。しかし、私のアルゴリズムが「愚か」で、可能なキースペースを事前定義されたマーカーに分割するだけの場合 (たとえば、「」、「a」、「b」、「c」、「d」、「e」... ) すべてのキーが「images/」で始まるバケット内のキーの一覧表示は、実際には高速化されません。
したがって、S3 を実際に使用した経験のある人が、バケットのキー スペースをトラバースするより良い方法を知っているかどうか、または同時実行によるキー リストを改善するための適応型 (つまり、「愚かではない」) アルゴリズムを試したことがあるかどうか疑問に思っています。
c - 並行してダウンロードするコードをどのように書くことができますか?
ファイルの並列ダウンロードを取得したいのですが、たとえば、ファイルサイズが54 kbの場合、ファイルの内容を10kbのブロックでダウンロードしたいと思います。
また、一度にリクエストできるのは5つまでです。しかし、どのように?フォーク()を使うことを考えましたが、どうすればいいのかよくわかりません。
1-10最初のリクエスト
11-202番目のリクエスト
21-303番目のリクエスト
31-404番目のリクエスト
41-505番目のリクエスト
51-54は、過去1回のリクエストが終了するまで待機し、その後実行されます。
データを取得する方法(recvなど)は気にしません。並行メソッドを実装する方法を知りたいだけですか?(fork()でできるならもっといいです)
java - javaはエグゼキュータを再利用します
私はシミュレーションシステムに取り組んでおり、各タイムステップで多くのモデルをシミュレートする必要があります。FixedThreadPoolを使用して、計算を高速化しました。
execute()
現在、を呼び出した後、エグゼキュータを新しいタスクに使用することはできませんshutdown()
。エグゼキュータをリセットして、次のシミュレーションステップで既存のエグゼキュータ(およびそのスレッド)を再利用できるようにする方法はありますか?
java - 実行スレッドを新しいスレッド Java に置き換える
現在の実行スレッドを Java の新しいスレッド オブジェクトに置き換える方法を知りたいです。さらにコンテキストを追加すると、新しいスレッドは、一意のキーと値をスレッド オブジェクトとして持つ同時ハッシュマップからフェッチされます。一意のキーは、現在の実行スレッドから取得できます。
network-programming - 条件変数 (POSIX 並行 API) を使用すると、並列ネットワーク コードの速度が本当に低下する可能性がありますか?
現在、複数のコンピューターで並列レンダリングを管理するアプリケーションをプログラミングしています。そのために、サーバー アプリケーションには、TCP 接続を管理するスレッドのプールがあり、質問ごとに 1 つのスレッドを使用しています。ネットワーク スレッドの 1 つがデータを受信した場合に他のスレッドに警告するために、すべての TCP スレッドで同じ条件変数を使用したいと考えています。
問題 : signal
POSIX API で関数を使用するには、ミューテックスを使用する必要があります。つまり、2 つのネットワーク スレッドが同時にデータを受信した場合、実行を継続するにはミューテックスが解放されるまで待機する必要があります。
現実的に、この条件変数を使用すると本当にコードが遅くなるでしょうか? また、使用したくない場合は、他のスレッド (wait
条件変数を呼び出すスレッド) で、ループしてネットワーク スレッドが何かを受信したかどうかを確認する while 命令を作成することもできます。
どうもありがとう :)
php - ASP.NET MVC 同時開発
サイトのさまざまな領域を同時に変更する必要がある複数の開発者によって同時に開発される非常に大規模なイントラネット サイトを確立および維持するための最良の方法を研究しています。
これには ASP.Net MVC を使用したいと考えていますが、フレームワークではサイトをコンパイルする必要があり (ビュー以外)、展開プロセスによって他の変更が上書きされるように見えるため、このテクノロジを使用するのは非常に難しいのではないかと心配しています。開発者が開発マシンからビルドを進めることを選択したときのテスト環境。
現在、個々の変更を展開するためにサイト全体を構築する必要のないインタープリター言語を使用しています.... フレームワークのコンパイル方法、特に ASP.Net MVC の動作に関して何か不足していますか? それとも、解釈されたコードを使用しない場合、複数の開発者による非連続的でペースの速い開発により、必然的に問題が発生するのでしょうか?
このような状況でのワークフローの性質を考えると、PHP を選択する方が適切でしょうか?
java - 使用されている同期キーワードでさえ数えないのはなぜですか?
私はいくつかのJava並行性の概念と使用されているものを学び始めます。しかし、このコードの1つは私の理解を超えています。
java - Java: ConcurrentHashMap の ConcurrencyLevel 値
ConcurrentHashMap のパフォーマンスが低下し始める ConcurrencyLevel の最適な値はありますか?
はいの場合、その値は何ですか?また、パフォーマンスが低下する理由は何ですか? (この質問は、ConcurrentHashMap が持つ可能性のある実際的な制限を見つけようとすることから生じています)。