問題タブ [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.
android - クラス UriMatcher の match(Uri) は再入可能ですか?
コンテンツ プロバイダーが応答するContentProvider
すべてのURI パターン(例: http://developer.android.com/ resources/samples/NotePad/src/com/example/android/notepad/NotePadProvider.html )。APIドキュメントで、、、、および「[すべて]を複数のスレッドから呼び出すことができる」ことに気付いた今日まで、これは問題ないように思えました。さらに、ドキュメントには、スレッドセーフまたは再入可能かどうかについては何も記載されていません。UriMatcher#match(Uri)
insert
query
update
delete
ContentProvider
insert
query
update
delete
UriMatcher
match
、、、およびの実装内で使用されるmatch
の共有static
インスタンスでの呼び出しの同期について心配する必要がありますか?UriMatcher
insert
query
update
delete
c++ - X プラットフォームの再入可能 wcstok()?
wcstok()
現在、GCC やその他のコンパイラ (存在する場合) で認識されている再入可能バージョンを探しています。
これまでのところ私は使用していますwcstok_s()
が、それは MSVC のみであり、他のプラットフォームでもコードをコンパイルする必要があります。wcstok_r()
一部のページでは、GCC ヘッダーでそれが見つからなかったことを示唆しています。他の (man) ページではstrtok_s()
、特定のワイド char バージョンについて言及していませんが、マルチバイト文字列のみ (?) に使用されると言われています。
だから、私は提案を開いています。独自のラッパー/バージョンを作成することは、唯一の最後の方法です。
aschepler の編集: が原因でコンパイルされないサンプル コードtoo many arguments
- 無意味であるにもかかわらずコンパイルする必要があります:
c++ - glibc sprintfをリエントラント関数で使用できますか?
ローカルバッファに書き込む場合、リエントラント関数でsprintfを使用できますか?このようなもの:
linux - __alloc_pages_slowpath() は再入可能ですか?
__alloc_pages_slowpath() への呼び出しは、__alloc_pages_slowpath() への呼び出しも行うデバイス割り込みに耐えることができますか、または 2 番目の呼び出しが最初の呼び出しを破損しますか?
XFS ファイル システム上の通常のファイルのプログラム コール read(2) が表示されます。カーネル スタック トレースは、最終的に __alloc_pages_slowpath() が呼び出され、e1000e IRQ が発生し、最終的に __alloc_pages_slowpath() が呼び出され、ログ メッセージ "fooprog: page allocation failure. order:0, mode:0x4020" がほぼ即座に発生することを示しています。
スタック トレース全体は、 https ://gist.github.com/790577 で確認できます。
c# - C# でデッドロックされたものを再入可能にロックしようとする、明らかなバグ
他の誰かがこの問題を見たことがあるかどうか知りたいです。次のように、静的に宣言されたオブジェクトをロックするアプリケーションがあります。
do-some-stuff はさまざまなことを行い、私が呼び出したルーチンの 1 つが同じロックをロックしようとします。スレッドのデッドロック。
私の推測では、この問題は私のリフレクションの使用に何らかの形で関係していると思われます。コール スタックの途中で、クラス定義でメソッドを検索し、.Invoke() を呼び出してメソッドを呼び出します。結果の呼び出しスタックは次のとおりです。
そのため、への最初の呼び出しlock(Group.IsisGroups)
はスタックの一番上のメソッドにありReliableSender.StartGroupReader
、一番下のメソッド doLookup で lock を呼び出すと、コードはデッドロックします。[External Code]
ブロックは、リフレクションInvoke()
メソッドを呼び出した場所からのものであり、その呼び出しによってlock()
デッドロックが発生しました。間違いなく同じオブジェクトがロックされているなど(オブジェクトは、クラスがロードされたときに静的に割り当てられ、タイプのList<Isis.Group>
ものであり、物事を追加および削除している間、実際の List オブジェクトは最後まで残ります.
これを引き起こす原因について何か提案はありますか?
concurrency - Tesseract(OCRエンジン)は再入可能ですか?
クアッドコアプロセッサでTesseractを使用してOCRを実行しています。速度を上げるために、4つのスレッドを使用して一度に4つの単語を読みたいと思います。複数のスレッドから同時にTesseractを呼び出すのは安全ですか?
注:各スレッドは、異なる非共有イメージで動作します。
注:速度が原因で、ロックによる保護は適切ではありません。
sql - 新しいスレッドを明示的に作成せずに、ドットネットにマルチスレッドを導入することは可能ですか?
処理が必要な数百のアイテムのループがあります。
各アイテムは、グローバル SQLConnection を条件付きで設定することによって処理されます。この SQLConnection を処理の一部として使用してアイテムが処理されます。
このため、これらの項目のいずれも並行して処理できないようにすることが重要です。
これは良い設計ではないことを認識しており、実用的になり次第修正したいと考えています。
ただし、私の最善の努力にもかかわらず、このコードは何らかの形でマルチスレッド化されているようです。どういうわけか、これらのタスクの 1 つが例外をスローしました。
この例外は外部キー制約の違反ですが、ビジネス接続先のない SQLConnection に対して動作していたことを示しています。
当然、これについて懸念がありますが、私の知る限り、このアプリにはマルチスレッド コードはありません。
新しいスレッドを明示的に作成せずにマルチスレッドを導入することは可能ですか?
編集:
- VB.Net 3.5SP1
- コンソール アプリ + クラス ライブラリ
- ときどき Web サービスを呼び出す
- SQL 呼び出しを行います
- 他にはあまりありません。Winform も WPF もありません。
c++ - memcpy() 関数は再入可能ですか?
シグナル ハンドラ内でいくつかの C++ 関数を呼び出すと、プログラムがセグメンテーション違反で終了します。gdbで確認すると、 memcpy() 関数でSIGSEGVを取得しています。memcpy() が再入可能な関数であるかどうかを知りたいですか?
c - Flex/Bison マルチパス クラス解析
私はおもちゃの OO 言語用のコンパイラを書いています。Flex と Bison を使用して、C で記述しています。
次の構文を検討してください。
私の現在のコードは、MyFunc で m_p がまだ宣言されていないと文句を言います (正当な理由があります)。したがって、次のようなマルチパス解析手法が必要であるという結論に達しました。
1 回目のパス - 変数宣言の処理
2 回目のパス - 関数定義の処理
まず、これが問題を解決する最善の方法ですか? 私が調べるべき他の方法はありますか?第二に、これが好ましい解決策である場合、再入可能なレクサー/パーサーを使用して実装しますか?
ありがとう
objective-c - 目標 c または c で読み書きロックが必要
Objective C の読み書きロックが見つからないようです。これは iphone dev 用です。何か案は?この文書の付録にはいくつかのコードがありますが、不完全です。