問題タブ [concurrency]
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.
java - スレッド同期に関する質問 (Java で)
私の Java アプリケーションには、並列化できる 2 つのサーバー呼び出しを必要とするロード タスクがあります。そこで、スレッド t1 ( task1を実行) とスレッド t2 ( task2用) を起動します。次に、他の両方のタスク (1 と 2) が終了したときに、特定のタスクtask3を実行したいと考えています。当然、タスク 1とタスク 2のどちらが先に終了するかわかりません...
これをコーディングする最も簡単な(そして最も安全な)方法はどれですか?
ご協力ありがとうございました
java - CountDownLatch とセマフォ
利用するメリットはありますか
java.util.concurrent.CountdownLatch
それ以外の
java.util.concurrent.Semaphore ?
私が知る限り、次のフラグメントはほぼ同等です。
1.セマフォ
2: カウントダウンラッチ
ただし、#2 の場合はラッチを再利用できず、さらに重要なことに、作成されるスレッドの数を事前に知る必要があります (または、すべてのスレッドが開始されるまで待ってからラッチを作成します)。
では、どのような状況でラッチが望ましいのでしょうか?
performance - アプリケーションのパフォーマンスを測定する手法
私は 2 年間、新しいユーザーや挿入された新しいデータの量のために、常に新しいハードウェアを使用できるようにする必要があるアプリケーションを維持しています。ただし、投資を正当化することは非常に難しい場合があります。
私は疑問に思い始めました - Web アプリケーションが現在サポートしているユーザーの最大数を確立するにはどうすればよいでしょうか?
JMeter スクリプトを使用することを考えましたが、ファイル転送とデシソン ツリーをシミュレートする必要がある場合、実装が非常に困難になる可能性があります。皆さんは何を使っていますか?
c++ - マルチスレッド環境で STL コンテナーへの読み取りアクセスを保護する必要はありますか?
私は 1 つの std::list<> コンテナーとこれらのスレッドを持っています:
要素を無期限に追加する 1 つのライター スレッド。
使用可能なときに要素を読み取って削除する 1 つのリーダー/ライター スレッド。
コンテナーの SIZE にアクセスする複数のリーダー スレッド (size() メソッドを使用)
最初の 2 つのスレッドからリストへのアクセスを保護する通常のミューテックスがあります。私の質問は、サイズ リーダー スレッドもこのミューテックスを取得する必要があるかどうかです。読み取り/書き込みミューテックスを使用する必要がありますか?
Visual C++ 6 を使用する Windows 環境にいます。
更新:答えはまだはっきりしていないようです。主な疑問を要約すると: 正確な値を必要としない (つまり、 +/- 1 変動)? 競合状態により、size() 呼び出しが無効な値 (つまり、適切な値とはまったく関係のない値) を返すようになるのはなぜですか?
回答: 一般に、競合状態を回避するためにリーダー スレッドを保護する必要があります。それにもかかわらず、私の意見では、アップデートで上記の質問のいくつかはまだ答えられていません.
前もって感謝します!
回答ありがとうございます。
concurrency - RIA での同時実行
これは、このプラットフォームでの最初の質問です。Flex、WebORB、および ASP.NET を使用して多くの開発を行ってきました。メッセージング (悲観的同時実行制御) で同時実行の問題を解決しました。これは非常にうまく機能しますが、アプリケーション全体がメッセージングに依存するようにもなります。メッセージングも同時実行制御もありません。ASP.NET には DataSet のバージョン管理機能があることは知っていますが、RIA で作業している場合、それをどのように使用しますか。クライアントのセッションに各データセットを保存するのは難しいようです...したがって、クライアントがすべての製品を必要とする場合は、クライアントのセッションにデータセットを保存する必要があります。クライアントが製品に何かを変更して製品を保存すると、データセット (セッションに保存されている) を更新して保存しようとすることができます... 大量の作業と大量のメモリが使用されるようです (これらの製品はクライアントのメモリに保持されるため、データセットはサーバー側セッションに保持する必要があります)。最も簡単な方法は、すべての DTO にバージョン番号を提供することだと思います。クライアントが DTO を保存しようとする場合、バージョン番号をデータベース内の番号と比較できます。
リーベン・カルドエン
multithreading - 命令型の並行プログラミングについてさらに学ぶための最良の方法は何ですか?
最近、最初の「適切な」マルチスレッド コードを作成する必要があり、「命令型スタイル」(つまり、C++/C#/Java などで使用される同時実行モデル) の並列プログラミング手法について、自分がほとんど知らないことに気付きました。
コーディング フーのこの分野について詳しく学ぶために、どのようなリソースがありますか (書籍とオンライン チュートリアルの両方など)。
注: 私は間違いなくより優れた同時実行モデル (Erlang のメッセージ パッシング、または Clojure の STM) について尋ねているのではなく、命令型言語で使用されるパラダイムについて尋ねているだけです。
c# - LINQ to SQL と同時実行の問題
大量注文記録システムを構築しようとしています。次の 3 つのプライマリ テーブルがあります。 1. Orders 2. OrderDetails 3. OrderShipment
Shipment テーブルには、注文ごとに n レコードが含まれており、レコードの出荷エントリは、顧客が注文を受け入れる前に変更でき、その後は凍結されます。(ビジネス要件)
これは実際のシナリオでは発生しない可能性がありますが、負荷テスト中に System.Data.Linq.ChangeConflictException 例外が発生しています。送信をトランザクション内にラップすることも役に立ちません。更新操作の全期間にわたって LINQ に強制的に行をロックさせることはできませんか?
これを乗り越える他の方法はありますか?
sql - MS SQL の同時実行性、過剰なロック
一度に何百人ものユーザーがアクセスしている ms sql 2000 にデータベースがあります。Reporting Services 2005 を使用して同じデータベースにヒットする集中的なレポートがあります。
多くのレポートが実行されており、同時にデータベースを使用している人がいる場合、その状況でしばらくすると、システムがトランザクションにタイムアウトを与え始めるレベルまでプロセスがブロックされていることがわかります。
トランザクションの流れを継続できるように、ブロッキングを最小限に抑えるグローバルな方法はありますか。
database - Webサービスとデータベースの同時実行性
データベースとの対話にWebサービスを使用する.NETクライアントアプリケーション(C#、WinForms)を構築しています。クライアントは、WANまたはVPNを使用してリモートの場所から実行されるため、データベースに直接アクセスするのではなく、Webサービスを使用することをお勧めします。
私が今取り組んでいる問題は、データベースの同時実行性をどのように処理するかです。つまり、異なる場所にいる2人が同じデータを更新する場合、どのように処理すればよいですか?各データベースレコードでタイムスタンプを使用し、それをupdate where句の一部として使用することを検討していますが、これは、タイムスタンプがWebサービスインターフェイスを介して前後に移動する必要があることを意味します。
これに取り組むための最良の方法は何ですか?
asp.net - Lucene.Net は、同じインデックスにアクセスする複数のスレッドを管理しますか?
ASP.NET で Lucene.Net を使用する場合、ある Web 要求がインデックスの更新をトリガーし、別の Web 要求が検索を実行していることが想像できます。Lucene.Net には、同時アクセスを管理する機能が組み込まれていますか?それとも、「別のプロセスによって使用されている」というエラーを回避するために管理する必要がありますか?
編集: ドキュメントと実験を読んだ後、これが私が学んだことだと思います: スレッドの安全性と同時実行性という 2 つの問題があります。マルチスレッドは、インデックスに悪いことを何もできないという点で「安全」です。ただし、一度に 1 つのオブジェクトがインデックスをロックするだけで安全です。2 番目のオブジェクトが来て、例外をスローします。したがって、検索を開いたままにして、別のスレッドのライターがインデックスを更新できると期待することはできません。また、スレッドがインデックスの更新でビジー状態の場合、サーチャーの作成は失敗します。
また、検索者は、インデックスを開いたときの状態でインデックスを見るので、インデックスを更新したままにしておくと、更新は表示されません。
検索者に最新の更新を見てもらいたかったのです。
私の設計は、これまでのところ機能しているように見えますが、現在の書き込みまたは検索が完了するまで、ライターとサーチャーが失敗しないようにロックを共有するというものです。