問題タブ [locks]
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.
ios - iosは、メソッドを同時に使用する際に特定の数のスレッドを許可します
という事は承知しています
複数のスレッドがメソッドに同時にアクセスするのを防ぐことができます。したがって、@synchronized{} が使用されている間は、その内部にアクセスすることはできません。
制限された数のスレッドのみを許可することをどうにかして、たとえば、2 つのスレッドまたは 3 つのスレッドのみが同時にメソッドにアクセスできるようにします。
PS: 同期リクエストを送信するメソッドがあり、同期リクエストの送信を一度に最大 3 つに制限したい
sql - Microsoft SQL Server の複数のロック
現在、Microsoft SQL Express Server を実行しています。1 人のユーザーがクエリをコミットせずに実行すると、テーブル全体がロックされます。問題は、悪意のあるユーザーが故意にデータベースを「破壊」する可能性があることです。どうすればこれを防ぐことができますか?
hibernate - JBossarjunaTransactionReaperはタイムアウト時にロールバックしません
Oracleデータベースにアクセスするアプリケーションを使用しています。そのデータベース上のオブジェクト(行)が、アプリケーションの外部のプロセスによってロックされることがあります。
私が抱えている問題は、トランザクションがトランザクションタイムアウトに達すると、arjunaコーディネーターがトランザクションをロールバックしようとしますが、成功しないことです。
スタックトレースは次のとおりです
jboss-5.1.0.GA、Hibernate 3.3.1.GA、およびOracle9.2.08を使用しています。
私はいくつかのテストを行いましたが、行がロックされている間はロールバックが機能しません。トランザクションのタイムアウトから経過した時間は関係ありません。トランザクションのタイムアウト後に行のロックを解除すると、その時点でロールバックが開始されます。
私はウェブ上でいくつかの調査を行いましたが、まったく同じエラーは見つかりませんでした。
ありがとう。
ディエゴ。
python - Python でのマルチプロセッシングとスレッド化の混在状況
問題 6721 に関して、Linux の同じ Python アプリケーションでマルチプロセッシングとユーザー スレッドの両方を使用するためのベスト プラクティスまたは回避策は何ですか? Python 標準ライブラリのロックはフォークでサニタイズする必要がありますか?
なぜ両方が必要なのですか?私は子プロセスを使用して大量の計算を行い、データ構造の結果が大きすぎてキューを介して返すことができません。結果はすぐにディスクに格納する必要があります。これらの子プロセスのそれぞれを個別のスレッドで監視することは効率的であるように思われました。これにより、終了時にスレッドが大きな (たとえばマルチ GB) データを読み取る IO をプロセスに戻すことができ、そこで結果がさらに計算するために必要になりました。他の子プロセスの結果と組み合わせます。子プロセスが断続的にハングしますが、これは (頭をドキドキさせた後) ロギング モジュールを使用することによって「原因」であることがわかりました。他の人はここで問題を文書化しています:
https://twiki.cern.ch/twiki/bin/view/Main/PythonLoggingThreadingMultiprocessingIntermixedStudy
これは明らかに未解決の python の問題を示しています。Python 標準ライブラリのロックは fork でサニタイズする必要があります。 http://bugs.python.org/issue6721
これを追跡するのが難しいことに驚いた私は、次のように答えました。
Python で Multiprocessing と Threading モジュールを混在させない理由はありますか
「注意してください」というかなり役に立たない提案と上記へのリンクがあります。
しかし、問題 6721 に関する長い議論は、同じアプリケーションでマルチプロセッシング (または os.fork) とユーザー スレッドの両方を使用するのは「バグ」であることを示唆しています。この問題についての私の理解は限られているため、同じアプリケーションでマルチプロセッシングとスレッド化の両方を使用するための回避策または戦略について結論を出すには、議論に意見の相違が多すぎます。当面の問題はロギングを無効にすることで解決されましたが、親プロセスと子プロセスの両方で少数の他の (明示的な) ロックを作成しており、さらに断続的なデッドロックに備えているのではないかと疑っています。
Python (2.7,3.2,3.3) アプリケーションでスレッド化とマルチプロセッシングを使用しているときに、ロックやログ モジュールを使用しているときにデッドロックを回避するための実用的な推奨事項を教えてください。
java - 同じリソースを待機してロックしているTomcatスレッド
次のJava\Tomcatスレッドダンプを検討してください。
これはデッドロックですか?同じリソース(0x00002ab5565fe358)が両方lockedであるように見えwaited onます-それはどういう意味ですか?
mutex - ロックを削除すると Helgrind のエラーが減少するのはなぜですか?
私は最初の並列プログラミングの割り当てを行っていますが、ミューテックスのロック状況全体で何をしているのかほとんどわかりません。
Helgrind を使用してコード内の競合状態を見つけようとしていますが、本来あるべき場所にロックがあると、Helgrind は驚くべき 7300 エラーを返します! ただし、クリティカル セクションでいくつかのロックを削除すると、実際にはエラーが 6000 に減少しますが、これはロックが必要な領域であることはわかっています。
何が原因でしょうか? そして、一般的な声明として、誰かが初心者向けのミューテックスロックを説明している良い情報源への参照を私に与えることができますか? ありがとうございました!
concurrency - ロック/条件変数の問題
私が書いているプログラムには 3 つの関数があります。簡単にするために、それらを A、B、C と呼びましょう。各関数が機能するには、リソース X にアクセスする必要があります。
制限として、A と B を同時に実行することは許可されておらず、適切に同期する必要があります。ただし、C は A または B と同時に実行できます。
これは私にいくつかの問題を引き起こしています。
最初に、A と B にロックを設定しようとしたので、A が呼び出されると、X へのロックを取得し、B と同じように解放します。このようにして、A と B は順次実行されます。ただし、この方法でロックを使用すると、C は A または B と同時に実行できなくなります。
そこで、B が実行されている場合に A が B からのシグナルを待つ必要があり、B が A からのシグナルを待つ必要がある条件変数を使用してみましたが、この種の相互依存呼び出しも機能しないようでした。
何をすべきかわからない。
multithreading - 複数のスレッドが、メソッドの使用が許可されているのは 1 つだけです
つまり、基本的に私が置かれている状況は、1 週間を通してそれぞれが異なる計算を行う多数のスレッドを持っているということです。週の終わりに、すべてのスレッドが関数 X() を呼び出し、次の週の計算を開始して、このサイクルを繰り返します。
ただし、メソッド X() で実際に操作を実行できるスレッドは 1 つだけであり、すべてのスレッドがメソッド X() に到達した場合に限られます。さらに、メソッド X() を使用するようになった 1 つのスレッドが終了するまで、どのスレッドも途中で続行することはできません。
だから私はこれを実装するのに苦労しています。条件変数を使用する必要があるように感じますが、スレッドなどでまだ不安定です。
.net - compmgmt.msc に示すように、ファイルの #locks ウィンドウをプログラムで監視します。
現在、ファイルロックを使用するレガシー プログラムを介して 1 つのファイルにアクセスしようとするユーザーが多すぎるという問題があります。
サーバー上で実行され、この特定のファイル (フラット ファイル データベース) を監視する dotnet プログラムを作成できるかどうかを調べています。クライアントがこのファイルにアクセスしようとして、別のユーザーによってロックされている場合はいつでも、誰がファイルにアクセスしているかを知らせるメッセージを送信して、私ではなくその人を困らせることができるようにしたいと考えています。
compmgmt.msc を開くと、ファイル、ファイルロック、およびユーザーがファイルをロックしていることがわかるので、この情報にアクセスできることがわかります。ただし、この情報を取得できる dotnet クラスが見つからないようです (#locks、ロックしたユーザー)。
ここで私を助けることができるクラスを知っている人はいますか?
java - Javaのクラス間で条件とロック変数を共有する
2つの別々のスレッドが2つのオブジェクトを実行し、一方のスレッドがもう一方のスレッドから通知されるまでコードの実行を待機するプログラムを作成したいと思います。
これを行うために、Conditionインターフェイスを使用します。
両方のクラスがアクセスできるように、コード内の変数lockと変数を宣言する場所がわかりません。condition
私が聞きたいのは、スレッドがlockとcondition変数をどのように共有して、それらが同じ条件でシグナリングおよび待機していることを確認するかということです。