問題タブ [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.
multithreading - ミューテックスとは
ミューテックスは、マルチスレッドの問題を解決するために頻繁に使用されるプログラミングの概念です。コミュニティへの私の質問:
ミューテックスとは何ですか?どのように使用しますか?
database - 複数の同時ユーザーをサポートするファイル データベースの提案
ネットワーク ドライブに保存でき、複数のユーザー (最大 20 人) がサーバー ソフトウェアなしで使用できるデータベースが必要です。
MS Access または Berkeley DB を検討しています。
ファイル データベースに関する経験を共有できますか?
どちらを使用しましたか、問題はありませんでしたか?
c# - C# での同時コレクション
C#で並行コレクションを取得する方法、または少なくとも並行列挙子をサポートするコレクションを取得する方法を探しています。現在、反復しているコレクションが変更されたときに取得しています。 InvalidOperationException
コレクションをディープ コピーしてプライベート コピーを操作することもできますが、もっと良い方法があるのではないかと考えています。
コードスニペット:
- 編集 -
私は答えを取りましたが、コレクションに書き込んでいたコードもロックを取得しようとする必要があることを確認する必要があることもわかりました。
java - Javaオブジェクト割り当てのオーバーヘッド
複数のスレッドからのアクセスを簡素化するために、Javaで不変のDOMツリーを作成しています。*
ただし、可能な限り高速に挿入と更新をサポートする必要があります。また、不変であるため、ツリーのN番目のレベルのノードに変更を加えた場合、新しいツリーを返すには、少なくともN個の新しいノードを割り当てる必要があります。
私の質問は、ツリーが変更されるたびに新しいノードを作成するよりも、ノードを事前に割り当てる方が劇的に速いでしょうか?実行するのはかなり簡単です。数百の未使用ノードのプールを保持し、変更操作に必要なときにノードを作成するのではなく、プールから1つプルします。他に何も起こっていないときにノードプールを補充できます。(明らかでない場合は、このアプリケーションでは、ヒープスペースよりも実行時間がはるかに長くなります)
これを行う価値はありますか?それをスピードアップするための他のヒントはありますか?
あるいは、不変のDOMライブラリがすでにあるかどうか誰かが知っていますか?検索しましたが、何も見つかりませんでした。
*注:不変性の概念に精通していない場合は、基本的に、オブジェクトを変更する操作で、メソッドが変更されたオブジェクトではなく、変更されたオブジェクトのコピーを返すことを意味します物体。したがって、別のスレッドがまだオブジェクトを読み取っている場合、ひどくクラッシュするのではなく、変更が加えられたことに気付かずに、「古い」バージョンで問題なく動作し続けます。http://www.javapractices.com/topic/TopicAction.do?Id=29を参照してください
java - ロックを保持している Java スレッドをプログラムで判別する
特定のオブジェクトのロックを保持しているスレッドの名前を実行時にプログラムでチェックすることは可能ですか?
c# - コレクションを読み取り専用として返す
情報のコレクションを維持するマルチスレッド環境にオブジェクトがあります。
現在、共有違反からコレクションを保護するために でreturn data;
ラップしています。ReaderWriterLockSlim
ただし、念のために言うと、呼び出し元のコードがコレクションに変更を加えることができず、既に存在するもののみを表示できるように、コレクションを読み取り専用として返したいと思います。これはまったく可能ですか?
ruby - Ruby には本当のマルチスレッドがありますか?
グリーンスレッドを使用したルビーの「協調的」スレッドについて知っています。処理に複数の CPU コアを利用するために、アプリケーションで実際の「OS レベル」のスレッドを作成するにはどうすればよいですか?
concurrency - マルチコア / マルチ CPU マシンにループ内の関数呼び出しを並列処理するように指示するにはどうすればよいですか?
私は現在、データベースから大量のデータをロードし、状況に応じてさまざまな計算によってはるかに小さなセットに削減する 1 つのモジュールを持つアプリケーションを設計しています。
より集中的な操作の多くは決定論的に動作し、並列処理に適しています。
データベースから到着する多数のデータチャンクを反復処理するループがあり、それぞれが副作用なしで決定論的関数を呼び出す場合、プログラムが関数が戻るのを待たずに設定するようにするにはどうすればよいですか次の呼び出しが行われるので、それらを並行して処理できますか? 原則を実証するための単純なアプローチは、今のところ私に適しています。
私は Google の MapReduce の論文を読みました。全体的な原則をさまざまな場所で使用できますが、今のところ、大規模なクラスターをターゲットにすることはしません。バージョン 1.0 の単一のマルチコアまたはマルチ CPU マシンになる予定です。 . そのため、現在、ライブラリを実際に使用できるかどうか、または自分でレベルを下げた基本バージョンを作成する必要があるかどうかはわかりません。
私は設計プロセスの初期段階にあり、これまでのところ言語として C 言語 (速度が重要な部分) と Python (生産性が重要な部分) をターゲットにしています。やむを得ない理由があれば乗り換えるかもしれませんが、今のところ自分の選択に満足しています。
現在のチャンクを処理するよりもデータベースから次のチャンクを取得する方が時間がかかり、プロセス全体が I/O バウンドになる可能性があるという事実を認識していることに注意してください。ただし、現時点ではそうではなく、実際には db クラスターまたはメモリ キャッシュなどを使用して、この時点で I/O バウンドにならないようにします。
c# - C# の bool 読み取り/書き込みアトミックです
C#でブールフィールドにアトミックにアクセスしていますか? 特に、ロックを設定する必要がありますか:
php - PHP の同時実行性の問題をテスト/デバッグ/修正するためのツールは?
PHP で memcached を使用して、比較的高度な処理を行っていることに気付きました。キャッシュのロックフリーの性質によって引き起こされる競合状態と同時実行の問題について考えて解決するのは、精神的な闘争になりつつあります。
PHP は、同時実行性 (スレッド、誰か?) に関してはツールがかなり貧弱に見えるので、これを適切にテスト/デバッグするためのソリューションがあるかどうか疑問に思います。
2 人のユーザーが 2 つのスクリプトを要求するまで待ちたくありません。これらのスクリプトは同時に並列プロセスとして実行され、同時実行性の問題が発生して頭を悩ませたり、clusterfsck に雪だるまになるまで気付かなかったりする可能性があります。
私が知っておくべき魔法のPHP同時実行ワンドはありますか?