問題タブ [multithreading]
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# - スレッドを再起動しようとすると、ThreadStateExceptionが発生します
スレッドを再起動しようとすると、System.Threading.ThreadStateExceptionが発生することがあります。問題のコードは次のとおりです。
それで、2つの質問-これは物事を行う正しい方法ですか、そしてそれは、エラーの発生を防ぐ方法がありますか?
.net - Interlocked.Exchange、ブール値ではありませんか?
Interlocked.Exchange
ブール値 に相当するものはありますか?
前の値を返し、ロックを必要としない値のアトミック交換など?
multithreading - 他の言語のErlangスタイルの並行性
アーランスタイルの並行性モデル(プロセス、メールボックス、パターンマッチング受信など)を提供するために、他のプログラミング言語用にどのライブラリが存在しますか?
注:スレッドライブラリやキューイングライブラリだけでなく、Erlangに類似することを目的としたものに特に興味があります。
multithreading - Sharepoint COMException 0x81020037
1 回の操作で複数のドキュメントのインポートをサポートする SharePoint アプリケーションに取り組んでいます。また、アイテム メタデータの基本的なメンテナンスを実行する ItemAdded イベント ハンドラーもあります。このイベントは、インポートされたドキュメントと手動で作成されたドキュメントの両方に対して発生します。パズルの最後のピースは、ワークフローを開始して別のメタデータ フィールドを更新するために実装したバッチ操作機能です。
SPListItem のファイル データを抽出することで、COMException 0x81020037 を発生させることができます。このファイルは単なる InfoPath フォーム/XML ドキュメントです。XML を変更して、SPListItem に正常にプッシュすることができました。その直後にカスタム機能を起動してメタデータを変更すると、時折 COM エラーが発生します。
エラーメッセージは基本的に、ファイルが別のスレッドによって変更されたことを示しています。カスタム機能がメタデータを変更している間、ItemAdded イベントはまだファイルをデータベースに書き戻しているようです。SPListItem が安全に変更できることを検出するために、遅延とエラー キャッチ ループを挿入しようとしましたが、ほとんど成功しませんでした。
別のスレッドがドキュメントをロックしているかどうかを確認する方法はありますか?
c# - クロススレッド イベントを呼び出す最もクリーンな方法
.NET イベント モデルは、あるスレッドでイベントを発生させ、別のスレッドでそれをリッスンすることがよくあります。バックグラウンド スレッドから UI スレッドにイベントをマーシャリングする最もクリーンな方法は何かと考えていました。
コミュニティの提案に基づいて、私はこれを使用しました:
c# - ThreadPool.QueueUserWorkItem で作成されたスレッドを中止する方法
QueueUserWorkItem で作成されたスレッドを中止する方法はありますか?
それとも必要ないのでしょうか?メイン アプリケーションが終了するとどうなりますか? そこから作成されたすべてのスレッドは自動的に中止されますか?
multithreading - ファイルとDBのどちらがロギングのより良いアプローチですか?
さて、これがシナリオです。大量のレコードを処理し、それに応じてデータベースに情報を入力するユーティリティがあります。
マルチスレッド バッチでこれらのレコードを処理します。このような各バッチは、各レコードのワークフロー トレースを作成するために同じログ ファイルに書き込みます。潜在的に、1 日で 100 万近くのログ書き込みを行う可能性があります。
このログを別のサーバーに存在するデータベースに作成する必要がありますか? 考慮事項:
- 複数のスレッドが同じログ ファイルに書き込むことの明らかな欠点は、ログ メッセージが相互にシャッフルされることです。データベースでは、バッチ ID でグループ化できます。
- パフォーマンス - バッチ処理をさらに遅くするのはどれですか? ローカル ファイルへの書き込み、または同じネットワーク上の別のサーバー上のデータベースへのログ データの送信。理論的には、ログ ファイルの方が高速ですが、ここで落とし穴はありますか?
どちらのアプローチでも実行できる最適化はありますか?
ありがとう。
.net - スレッドが Thread.Sleep() から復帰しない
C# で記述された Windows サービスがあります。サービスは、これを行うスレッドを生成します。
データベースがなくなって数回後に Thread.Sleep を入れ、データベース接続エラーでいっぱいの 3Gb ログ ファイルに戻ってきました。
これは何ヶ月も正常に動作していますが、最近、log.Error() ステートメントが「System.InvalidOperationException: This SqlTransaction has completed; it is no longer available」という例外をログに記録し、その後二度と戻ってこないというインスタンスをいくつか確認しました。 . サービスは何日も実行し続けることができますが、それ以上はログに記録されません。
いくつか読んだことで、Thread.Sleep が理想的ではないことはわかっていますが、なぜ元に戻らないのでしょうか?
javascript - JavaScript とスレッド
JavaScript でマルチスレッドを行う方法はありますか?
python - スレッドは Python でどのように機能し、Python スレッド固有の一般的な落とし穴は何ですか?
Python でスレッドがどのように機能するかについて頭を悩ませようとしてきましたが、スレッドがどのように動作するかについての適切な情報を見つけるのは困難です。リンクか何かが欠けているだけかもしれませんが、公式ドキュメントはこの件に関してあまり完全ではないようで、適切な記事を見つけることができませんでした.
私が知る限り、一度に実行できるスレッドは 1 つだけで、アクティブなスレッドは 10 命令ごとに切り替わりますか?
適切な説明はどこにありますか、または提供できますか? また、Python でスレッドを使用しているときに遭遇する一般的な問題に注意してください。