問題タブ [reentrancy]
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 - puts は再入可能ですか?
int puts(const char*);
リエントラントですか?シグナルハンドラに安全に入れることはできますか?
windows - WindowsイベントとWindowsタイマーイベントを再実行することは可能ですか?
イベントハンドラー(ボタンクリック)で実行される「Update」メソッドがあり、Windowsフォームではタイマーコールバックがあります。2つの「更新」(再入可能)を同時に実行することは可能ですか?つまり、タイマーコールバックの実行中(Updateメソッドの呼び出し)に、ユーザーがボタンをクリックし、クリックハンドラーがUpdateを実行します。
または、どちらもUIスレッドで実行されるため、2つのUpdateメソッドは完全にシリアル化されます。
または、Updateがスレッドをある種の「許容可能な待機」に入れ(これについてはあまり明確ではありません)、クリックハンドラーがAPCとして実行できる場合がありますか?
ご覧のとおり、私はこれについて完全に混乱しています...
どんな説明でも大歓迎です!
java - 階層的なリエントラントの読み取り/書き込みロックのためにJavaで使用する戦略は何ですか?
階層的に編成されたリソースへのアクセスを管理するために、一連の読み取り/書き込みロックを階層的に編成する効率的なシステムを探しています。サブツリーが書き込み用にロックされている場合、サブツリーが解放されるまで、サブツリー全体で他のロックを取得できないようにする必要があります。同様に、サブツリーの書き込みロックは、親のロックを防ぐ必要があります。
これが私が考えていたアイデアです:
ApacheCommonsTransactionを使用します。残念ながら、プロジェクトは2008年3月以降更新されておらず、非公式に終了しています。一部のAPIドキュメントは、今後のバージョン(1.3または2.0)に何らかの階層ロックが含まれることを示しているようですが、ソースが見つからず、SVNリポジトリにアクセスできなくなっているようです。
一連の
ReentrantReadWriteLock
sを使用します。これは、階層的に編成します。私は並行性の専門家ではないので、自分でそれを行うのは少し怖いです。予備的な考えでは、サブツリーをロックする前に、ReentrantReadWriteLock
s自体を管理する構造全体に外部ロックを使用する必要があることを示しているようです。そのため、ロックを解放する場合でも、外部ロックを使用する必要があります。 …</p>からのクラスを使用
java.util.concurrent
しjava.util.concurrent.atomic
ReentrantReadWriteLock
て、一連のsで実行できるよりも効率的な方法で階層ロックを実装します。
私はその最後の道を進む準備ができていますが、この問題をよりよく解決する既存のライブラリが見つからないことに驚きました。それで:
- 私はいくつかの明白な解決策を逃しましたか?
- それとも、この問題を適切に解決するのは特に難しいですか?
wcf - WCF MessageBuffer.CreateMessageスレッドは安全ですか?
http://msdn.microsoft.com/en-us/library/system.servicemodel.channels.messagebuffer(v=vs.85).aspxは、「パブリックスタティック(Visual Basicで共有)メンバーこのタイプのはスレッドセーフです。インスタンスメンバーはスレッドセーフであるとは限りません。」
原則として、インスタンスメンバーにはスレッドセーフの保証がないようです。
ただし、一部のインスタンスメンバーメソッドは再入可能でスレッドセーフであり、他のメソッドはそうではないと推測しています。
MessageBuffer.CreateMessageはインスタンスメソッドです。この特定のメソッドが再入可能であるかどうか(または呼び出し元がメソッドへの呼び出しの周りにロックを実装する必要があるかどうか)を誰かが確認しましたか?
c++ - 非再入可能 C ライブラリ呼び出しの使用にフラグを付ける方法はありますか?
私は非常にマルチスレッド化されたプロジェクトに取り組んでおり、コンパイラに C ライブラリへの再入不可呼び出しの使用にフラグを付ける方法があるかどうか疑問に思っていました (たとえば、strtok_r の strtok intsead)? そうでない場合、コードベースを定期的に検索できるように、再入不可の呼び出しのリストはありますか?
関連する質問は、再入不可の呼び出しの 3d パーティ ライブラリの使用にフラグを付ける方法があるかどうかです。
再入可能性はスレッドセーフを意味すると思いますが、必ずしもその逆ではありません。スレッド化されたプロジェクトで再入不可の呼び出しを使用する正当な理由はありますか?
java - Javaによるリエントラントロックとデッドロック
誰かが私にJavaコード(疑似)の例を使ってどのように説明しReentrant lock
、deadlock
相互に関係することができますか?
multithreading - 異なるファイルハンドルを使用する場合、fprintfとfscanfは再入可能ですか
同じプロセスでfprintfまたはfscanfを同時に呼び出す2つのスレッドを持つことはできますか?
1つのストリームは、最初のスレッドによって書き込まれ、2番目のスレッドによって読み取られ、もう1つのストリームは、最初のスレッドによって読み取られ、2番目のスレッドによって書き込まれます。したがって、同じストリームへの同時書き込みまたは同時読み取りの状況はありません。
答えが「いいえ」の場合-printf/scanfファミリーに再入可能な代替手段はありますか?
この質問は、次のコメントの後に続きます。printfおよびscanf(linux)を介したスレッド通信
.net - メソッド全体をスレッドセーフにする最も簡単な方法は?
マルチスレッド プログラミングについては、学ぶべきことがたくさんあるようで、少しばかり気が引けます。
私の現在のニーズでは、メソッドが終了する前に別のスレッドから再度呼び出されないようにしたいだけです。私の質問は次のとおりです。
これは、メソッドをスレッドセーフにする適切な (安全な) 方法ですか?
それが十分でない場合、これを達成する最も簡単な方法は何ですか?
編集:シナリオに関する詳細情報:
Foo のインスタンスは 1 つだけです。
Foo.DoWork() は、System.Timers.Timer の Elapsed イベントで ThreadPool スレッドから呼び出されます。
通常、 Foo.DoWork() は次に呼び出されるまでに何百年も前に終了しますが、長く実行され、終了する前に再度呼び出されるわずかな可能性のためにコーディングしたいと思います。
(また、この質問に言語に依存しないタグを付けることができるかどうかを確認できるほど賢くないので、タグを付けていません。賢明な読者は、該当する場合は自由にタグを付けてください。)
multithreading - マルチスレッド プログラムで使用されている API の再入不可関数
私は C++ で QT API を使用していますが、QT の経験がない人からも効果的な答えが得られると思います。
QT の XML 処理クラスには setContent() という関数があり、再入不可として指定されています。setContent() を呼び出すと、XML ファイルがメモリに読み込まれ、データ構造として返されます。
私が理解しているように、再入不可の関数は、関数が異なるファイル/オブジェクトを操作するために呼び出されたとしても、複数のスレッドから同時に呼び出すのは安全ではありません。
これに基づいて、私の理解では、これらのスレッドの両方が setContent() 関数に同時にアクセスできないように保護されていない限り、この関数を使用して XML ファイルを開く複数のスレッドを持つことはできないということです。
これは正しいです?もしそうなら、これは直感的にマルチスレッドの問題を引き起こす関数のようには見えないので、API を書くには本当に貧弱な方法のように思えます。さらに、APIによって提供されるミューテックスはまったくありません。
複数のスレッドが異なる XML ファイルを開くマルチスレッド プログラムでこの関数を使用するには、setContent() 関数へのアクセスを処理する最良の方法は何ですか? XML にアクセスするすべてのファイルに含まれるヘッダー ファイルに、独自の extern ミューテックスを作成する必要がありますか?
c++ - Are there any cpp functions or objects (excluding inherited from c) that are not thread safe even when each thread operates on its own data?
Sorry for the long title, but I think it explains well what I'm interested in. For example C function strtok is not thread safe in worst possible way :) , it uses a global state. So even if it is called on different data it is not thread safe. So my question is are there functions in "C++ minus C" that have same problem. Again I'm not interested in things like "if you write to same file from 10 threads it is undefined behavior". What I'm interested is "if you write to 2 diff files from 2 diff threads (each thread writes to its own file )that is not thread safe."