問題タブ [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.

0 投票する
7 に答える
42997 参照

c++ - 並行プログラミングC++?

私はどこでも並行プログラミングについて耳にします。それが何であるか、そしてC++の新しい標準が同じことをどのように容易にするかについて、いくつかの光を当てることができますか?

0 投票する
6 に答える
90531 参照

java - Java並行および並列GC

この記事-XX:+UseParNewGCは、 「並行GCで並列の若い世代のGCを有効にする」を 使用することを提案しています。

私の混乱は、並列GCと並行GCの両方を有効にするために、

  • 使用-XX:+UseParNewGCまたは
  • -XX:+UseParNewGC -XX:+UseConcMarkSweepGC?の両方を使用します

PS

JVM6を使用しています。

0 投票する
7 に答える
9613 参照

c++ - 同時実行のための C++03 メモリ モデルとは何ですか?

C++03 での同時実行のメモリ モデルは何ですか?

(そして、C++11 は並行性をより適切にサポートするためにメモリ モデルを変更しますか?)

0 投票する
1 に答える
2153 参照

c# - db4oクライアント/サーバーは一度に1つのクエリしか処理できないように見えますか?

私たちはdb4o(http://www.db4o.comのOO-DBMS )を評価しています。クライアント/サーバーモードのパフォーマンステストをまとめました。サーバーを起動してから、一度に複数のクライアントでハンマーで叩きます。サーバーは一度に1つのクライアントのクエリしか処理できないようです。

このシナリオを可能にする構成スイッチをどこかで見逃したことがありますか?サーバーの実装は以下のとおりです。クライアントは、操作ごとに接続、クエリ(読み取り専用)、および切断を行い、操作はクライアントプロセス内の複数のワーカースレッドから次々に実行されます。同じサーバーに対してそれぞれ1人のワーカーで1つのクライアントプロセスを起動した場合も、同じ動作が見られます。

助言がありますか?

編集:LazyおよびSnapshot QueryModesを発見して試してみました。これにより、サーバーのブロックの問題が(部分的に)軽減されますが、クライアント(1を待機する40の同時テストクライアントを実行)では、重大な同時実行の問題が発生します。 -サーバーでランダム操作要求)ハンマーを発行する前の300ms。LINQプロバイダーおよびIO内部から発生する例外があるようです:-(

0 投票する
7 に答える
123695 参照

c# - C# でグローバル ミューテックスを使用するための適切なパターンは何ですか?

Mutex クラスは非常に誤解されており、Global ミューテックスはさらに誤解されています。

グローバル ミューテックスを作成するときに使用する適切で安全なパターンは何ですか?

うまくいくもの

  • マシンのロケールに関係なく
  • ミューテックスを適切に解放することが保証されています
  • ミューテックスが取得されない場合、オプションで永久にハングしません
  • 他のプロセスがミューテックスを放棄した場合に対処する
0 投票する
5 に答える
2409 参照

asp.net - 同時 ASP.NET セッションのベスト プラクティス

ユーザー A は、チケット管理システムにログインして「SomePage.aspx」のコンテンツを編集します。

ユーザー B は 30 秒後にログインして、「SomePage.aspx」で同じチケットを編集します。

他の誰かが同じコンテンツを変更していることを各ユーザーに通知するための (3 層アーキテクチャでの) 最もよく知られている方法は何ですか?

0 投票する
13 に答える
5336 参照

java - Javaコードを常にスレッドセーフにするべきですか、それともパフォーマンス上の理由から必要な場合にのみ行うべきですか?

現時点では単一のスレッドでのみ使用されるクラスを作成する場合、現時点では必要がなくても、それらをスレッドセーフにする必要がありますか? 後でこのクラスを複数のスレッドで使用する可能性があり、その時点で競合状態が発生する可能性があり、最初にクラスをスレッドセーフにしなかった場合、競合状態を見つけるのに苦労する可能性があります。または、パフォーマンスを向上させるために、クラスをスレッドセーフではないものにする必要がありますか? しかし、時期尚早の最適化は悪です。

別の質問: 必要に応じてクラスをスレッドセーフにする必要がありますか (複数のスレッドで使用する場合、そうでない場合)、必要に応じてこの問題を最適化する必要がありますか (同期が処理時間の重要な部分を消費することがわかっている場合)?

両方の方法のいずれかを選択した場合、デメリットを軽減する方法はありますか? または、使用する必要がある 3 番目の可能性はありますか?

編集:この質問が頭に浮かんだ理由を述べます。当社では、データをプロパティ ファイルに書き込む非常に単純なユーザー管理を作成しました。私はそれをWebアプリで使用しましたが、いくつかの作業を行った後、ユーザー管理がユーザーのプロパティ(名前とパスワードを含む)とロールを忘れたという奇妙なエラーが発生しました。それは非常に厄介でしたが、一貫して再現可能ではなかったので、競合状態だったと思います. ディスクからの読み取りとディスクへの書き込みのすべてのメソッドを同期したので、問題はなくなりました。そもそも同期を使ってクラスを書いていれば、おそらくすべての面倒を避けることができたのではないかと思いましたか?

EDIT 2 : Pragmatic Programmer のヒントを見ていると、ヒント #41: Always Design for Concurrency を見ました。これは、すべてのコードがスレッド セーフであるべきだと言っているわけではありませんが、並行性を念頭に置いて設計する必要があることを示しています。

0 投票する
4 に答える
1081 参照

haskell - Haskellで親プロセスとフォークされた子プロセスの間でデータを共有するにはどうすればよいですか?

そもそも Haskell を使用して子プロセスをフォークするにはどうすればよいでしょうか?

また、パイプがデータ共有の質問に対する明らかな解決策である場合、パイプを使用する以外にそれを行う方法はありますか? 私は、C での共有メモリ セグメント (shmget、*shmat、shmdt、および shmctl 関数) の使用に精通しています。Haskell はこれを真似できるでしょうか? もしそうなら、どのように?

お手数をおかけいたしますが、何卒よろしくお願いいたします。

私は関数型プログラミング言語に非常に慣れていないことを認めなければなりません。Haskell に関してはなおさらです。だから私がばかげたことを言ったら、私を許してください(そして私を訂正してください).

0 投票する
4 に答える
556 参照

.net - スレッド費用の測定

Joe Duffy は、MSDN の記事 " Using concurrency for scalability " で、スレッドを作成するコストは約 200,000 サイクル、破棄するコストは約 100,000 サイクルであると述べています。

いくつかの計算を実行するために新しいスレッドを作成しようとするとき、計算自体が 200,000 サイクルよりも高価であることを確認したいと思います。

CPUサイクルを測定するにはどうすればよいですか? 実行時間を計測するより面白いと思います。

0 投票する
6 に答える
2161 参照

asp.net - ユーザーが同じ行で作業できないようにする

私は、チケット作業システムに似た Web アプリケーションを使用しています。一部のユーザーは、新しい問題を入力します。他のワーカーは、問題を選択して解決します。すべてのデータは、MS SQL サーバー 2005 で維持されます。

問題の解決に取り組んでいるユーザーは、未解決の問題を表示できるページに移動します。最大 20 人が同時にこのページを見ることができるため、私が対処しなければならなかった潜在的な問題の 1 つは、ページが読み込まれた直後に他の誰かが選択した問題を誰かが選択した場合にどうなるかということでした。

これに対処するために、私は2つのことをしました。まず、選択する課題を表示するグリッドビューは、AJAX タイマーを使用して 1 秒ごとに更新します。問題が選択されると、最大で 1 秒後に消えます。この秒以内にいずれかを選択すると、別の選択を求めるメッセージが表示されます。

問題は、これの AJAX 部分があまりにも多くの更新を送信しており (これは私が想定していることです)、ページとデータベースのパフォーマンスに影響を与えていることです。さらに、更新は毎秒実行されません。ストアド プロシージャをトリガーする作業を行う場合、タイマーが信頼できないことがわかりました。

もっと良い方法があるはずですが、見つけられないようです。このような状況の経験がある人はいますか、または複数のユーザーが同じレコードを選択して維持しないようにするための提案はありますか? メッセージだけでアプリケーションを使用するのがイライラするので、AJAX部分を完全に無効にしたくありません。

ありがとう、