問題タブ [deadlock]
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 - サーバーは同じソケットを使用してクライアントに応答を送信できますか? どうやって?
私はバークレー ソケット (インターネット ドメインと Unix ドメインの両方) を使用していますが、サーバーが要求の読み取りとクライアントへの応答の書き込みに同じソケットを使用できるかどうか疑問に思っていました。または、クライアントはリプレイを待機する別のソケットを作成し、サーバーは受信したメッセージの処理後にそれに接続する必要があります。
ところで、接続指向のソケット (ストリーム ソケット、TCP など) について話しています。
これは簡略化されたサーバー コードです (簡略化のために、ここではシステム コールのエラー チェックを省略しています)。
そして、これは単純化されたクライアント コードです (単純化するために、ここではシステム コールのエラー チェックを省略しています)。
connected_socket
サーバーとクライアントで使用してclient_socket
、応答メッセージを返すことはできますか? または、「受け入れる」ときにサーバーで取得したクライアントアドレスを使用して、クライアントのソケットに接続する必要がありますか?
コメントが表示されているクライアント/サーバーで読み取り/書き込みを使用してみましたが、両方のプログラムがブロックされたままになり、デッドロックのようです。
よろしくお願いします!よろしく。
windbg - windbg を使用してハング ダンプからハンドルの所有者を見つけるにはどうすればよいですか?
どのスレッドが windbg のイベント ハンドルの所有者であるかを調べるにはどうすればよいですか。
私は走っています
そして得る
名前がないので、スレッドが待機しているスレッドを証明するために所有者を取得する方法がわかりません
[編集] 元のプロセスをユーザーのマシンで再起動する必要があるため、ダンプに対して作業する必要があるため、ライブ セッションをデバッグできません
私がこれまでに見つけた主題に関する最良の議論はこのブログにありますが、残念ながら私たちは異なるロック方法を使用することになり (私は WaitForMultipleObjectsEx を使用し、説明は WaitForSingleObject に関するものです)、彼はライブプロセスにアクセスできるようです
私のスレッドのスタックトレース(何かでブロックされていて、現在の所有者を探している場所)は次のとおりです。
c# - nUnitを使用したデッドロックのテスト
私はユニットテストとnUnit(2.48)を初めて使用します。デッドロックが発生するというテストメソッドを作成したいと思います。これは可能ですか?明らかに、nUnitはデフォルトでメソッドの実行にかかる時間を認識しないため、別のスレッドで作業を行うためのコードを記述し、それを中止して、定義した時間がかかる場合は例外をスローする必要がありますか?これを行うためのより良い方法はありますか?
ありがとうございました
.net - WinDbg -- TraceListener と飽和した ThreadPool
断続的にハングアップするマルチスレッド .NET Windows サービスを使用しています。ハングが発生すると、カスタム tracelistener への呼び出しが何らかの理由でブロックを開始するため、スレッドプールは完全に飽和状態になります。問題のあるコードにロックはなく、windbg によるとブロックしているものはありませんが、どこかでブロックしていることは間違いありません。スタックにも例外はありません。BufferedStream.Write コードで時折ヒットする Thread.Sleep(1) がありますが、私の質問は、ReOpenMetaDataWithMemory、CreateApplicationContext、および DllCanUnloadNow の意味は何ですか?
ThreadPool 上のハングアップした 2000 のワーカー スレッド (通常の動作ではありません!) のほぼすべてに、次のようなスタックがあります。
sql-server - 負荷がかかった状態でロールアップ テーブルを更新する最良の方法は何ですか?
SQL Server 2005 データベースにテーブルを作成し、集計値と計算値を入力しました。目的は、データベースへのすべての呼び出しで大規模な結合とグループ化を回避することです。このテーブルを 1 時間ごとに更新したいのですが、Web サイトに負荷がかかっているときにこれを行う最善の方法がわかりません。1 つのトランザクションですべてのレコードを削除してテーブルを再作成すると、うまくいくでしょうか、それともデッドロックやその他の問題が潜んでいるのでしょうか?
sql - Sql 2005のOLTPのロック-コミットまたは非コミット?
私の会社がデッドロックの問題をトラブルシューティングするために雇ったDBAは、トランザクションレベルをREADUNCOMMITTEDからREADCOMMITTEDに設定すると、OLTPデータベースのロックの問題が改善されると言っていました。
それは100%間違っているのではありませんか?READ COMMITTEDは、より多くのロックを引き起こしますよね?
詳細:
私たちのデータは非常に「サイロ化」されており、ユーザー固有です。すべてのユーザーインタラクションの99.9999999%は独自のデータで機能し、ダーティリードシナリオが発生した場合、ユーザーが実行しようとしていることにほとんど影響を与えません。
すべての回答に感謝し、問題のdbaは役に立たなくなったため、単一のインデックスを追加することでロックの問題を修正しました。
通常の選択ではなく、更新ステートメントでロックの問題が発生していることを指定しなかったことを残念に思います。私のグーグルから、2つの異なるクエリタイプには、ロックの問題に対処する際の明確な解決策があります。
c# - C#アプリケーションでのデッドロックの検出
重複の可能性:
競合状態/デッドロックを見つけるためのC#/。NET分析ツール
デッドロックしてハングしていると思われるアプリケーションをデバッグしています。ただし、これは数日ごとにのみ発生し、コンピューターでは発生しないため、デバッガーを接続できません。実行中のアプリケーションにクエリを実行し、どのメソッド/ロック/デッドロックが発生しているかを調べるために使用できるユーティリティまたはメソッドはありますか?
更新:通常、アプリケーションは顧客の場所で実行されており、私はマシンにアクセスできません。また、大量のソフトウェアをインストールするように依頼することに完全に満足しているわけではありません。
oracle - Rownum を使用するとデータベースがデッドロックしますか?
次のコードがアプリケーション内の複数のスレッドから呼び出されている場合、デッドロックのリスクはありますか? このためにデータベースに接続するために使用されるトランザクションは、この呼び出しの直前に開かれ、戻ると閉じられます。アプリケーション: Java データベース: Oracle
c# - 進行状況を GUI にスレッド化する
Web サイトをスクレイピングするためにアプリケーションにスレッドを実装しました。すべてのサイトがスクレイピングされたら、それらを処理したいと思います。
form は queueworker を作成します (これは 2 つのワーカーを作成し、タスクを処理します)。すべてのタスクが完了したら、フォームスレッドでそれらを処理したいと思います。この時点で、私はこれを
タスクが実行された後、(queueworker から) 起動します。
そして、そのイベントを次のようにキャッチします。
問題は、formthread がブロックされ、Invoke を呼び出すとアプリケーション全体がデッドロック状態になることです。
デッドロックを発生させずにフォームスレッドを更新し、すぐに更新するにはどうすればよいですか (ワーカースレッドが完了すると begininvoke が発生します)