問題タブ [thread-safety]
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++ - Linuxでprintf_lに相当するものを取得するには?
この関数は OS X に存在し、関数にカスタム ローカルを渡すことができます。setlocale はスレッドセーフではなく、パラメーターとして locale を渡すことは安全です。
同等のものがない場合は、ロケールに依存しない printf の方法、または double (%g) のみの printf で問題ありません。
c# - lock(objlocker) は、そのオブジェクトをスレッドセーフなアプリ全体にしますか? また、静的メンバーは自動的にスレッドセーフですか?
オブジェクトをロックすると、そのオブジェクトはアプリケーション全体でロックされますか?
たとえば、C# 3.0 の要約セクション 19.6.1「スレッド セーフティと .NET Framework 型」のこのスニペットは次のとおりです。
最初のロック:
別のスレッドがアクセスできないようにします:
または両方を同時に実行できますか?
また、CLR は自動的に静的メソッドをスレッド セーフにしますか? それとも開発者次第?
ありがとう、ジョン
c# - IStorage の複合ファイル実装はスレッドセーフですか?
C# からの IStorage の複合ファイル実装 (StgCreateDocfile) を使用しています。
自分で読み取りと書き込みを同期した場合、複数のスレッドから 1 つの IStorage / IStream インスタンスにアクセスしても安全ですか? または、ここで問題になる可能性のある COM の問題はありますか?
たとえば、EnumElements を安全に呼び出してストレージ内のすべてのストリームを取得し、同時に (別のスレッドから) 新しいストリームを作成して書き込むことはできますか?
私は実装用のストレス テストを既に作成しており、問題はありませんでしたが、100% 確信する必要があります。MSDN ドキュメントでこの情報を見つけられませんでした。
java - double-check イディオムを使用して遅延ロードされたフィールドをリセットする
「インスタンスフィールドの遅延初期化のためのダブルチェックイディオム」を検討してください。
/blockquote>フィールドを安全な方法でリセットできるようにしたい (私の場合は、データベースから強制的に再度ロードする)。reset メソッドを使用することでこれを行うことができると思います。
/blockquote>これは、フィールドをリセットする標準的な方法ですか? 安全ですか?落とし穴はありますか?ブロッホがダブルチェック遅延読み込みについて次の警告を出したので、私が尋ねているのです。良い考えではありませんが、ここでは適切です。」
ヒマラヤのプラヤさん、よろしくお願いします。
c# - スレッドセーフな使用のために静的クラスのスコープを制限するために AppDomain を使用する方法は?
私は、設計が不十分なソリューションに悩まされてきました。スレッドセーフではありません!
ソリューションにはいくつかの共有クラスとメンバーがあり、開発中はすべてクールでした...
BizTalk は私の戦艦を沈めました。
カスタム BizTalk アダプターを使用してアセンブリを呼び出しています。アダプターは私のコードを呼び出して並行して実行しているため、同じ AppDomain の下ですべて複数のスレッドを使用していると思います。
私がやりたいことは、自分のコードを独自の AppDomain の下で実行することです。これにより、私が抱えている共有の問題が互いに干渉することはありません。
BizTalk アダプターがインスタンス化してから Process() メソッドを実行する非常に単純なクラスがあります。
Process() メソッド内に新しい AppDomain を作成したいので、BizTalk が別のスレッドをスピンするたびに、独自のバージョンの静的クラスとメソッドが作成されます。
BizTalkAdapter コード:
これはクラス BizTalk コールです。
参考までに: Loader クラスは、dataFile クラスとは別の DLL にあります。
どんな助けでも大歓迎です。コードをスレッドセーフにする作業を続けますが、これが「単純な」答えになると思います。
他に思い当たる人がいたら、どうぞ。
ありがとう、
キース
完全を期すためだけに。
「Transport Advanced Options」ダイアログで送信アダプタを「Ordered Delivery」としてマークすると、発生していたマルチスレッドの問題を回避できることがわかりました。
これは私の問題に対する別の可能な答えだと思いますが、必ずしも質問に対するものではありません。
multithreading - SharePoint とスレッド セーフ
SharePoint とスレッド セーフに関する記事、フォーラム、またはブログ投稿を探していますか? SharePoint オブジェクト モデルを使用する際に考慮しなければならない、スレッド セーフに関するいくつかの特別な側面があることは確かです。
実際、これについてはまだ多くの情報が見つかりませんでした。
ですから、あなたの答えを楽しみにしています。
さようなら、フロー
java - wait/notifyAll を使用した Java スレッドの適切な同期?
これは、私が何をしているかを示す私のアプリケーションの簡略化されたバージョンです。
ここでの基本的な概念は、入ってくるデータ行に対してすべて独立して何らかの処理を行い、好きな場所にデータを書き出す一連のワーカーがあるということです。メインスレッドにデータを返す必要はありません。互いにデータを共有します。
私が抱えている問題は、このコードがデッドロックすることです。100 万行を超えるファイルを読み込んでいますが、幸運にもアプリが応答しなくなる前に 100 行を読み込むことができました。
ワーカーは、実際にはすべて異なる量の作業を行っているため、次のラインに移動する前に、すべての作業が完了するまで待ちたいと考えています。
処理中のファイルが大きすぎてメモリに収まらないため、ワーカーにさまざまな速度で処理させてデータを内部的にキューに入れることはできません。
各ワーカーに個別に「行」を取得するための独自の FileReader を与えることはできません。これは、ワーカーがそれを見る前に行で大量の処理を行い、各ワーカーで処理をやり直す必要がないためです。
Java での同期のかなり単純な側面が欠けていることはわかっていますが、この時点で立ち往生しています。ここで私が間違っていることを誰かが説明できれば幸いです。同期のいくつかの側面を誤解していると思いますが、それを修正しようとするアイデアがありません。
multithreading - コードの再入可能性とスレッド セーフ
「コードの再入可能性」と「スレッドセーフ」の概念の違いは何ですか? 以下のリンクに従って、コードの一部は、それらのいずれか、両方、またはどちらでもない可能性があります。
説明がはっきりと理解できませんでした。助けていただければ幸いです。
multithreading - SQLite3 でのテーブルのスレッド セーフと同時変更
SQLite3 のスレッドセーフは、異なるスレッドがデータベースの同じテーブルを同時に変更できることを意味しますか?