2009-07-09 2 views
4

システムの問題をデバッグする際に、ボトルネックの原因となっているスレッドの競合を発見しました。この問題を扱う他の人々にこの現象を説明する必要があります。それらのうちのいくつかは開発チームからのものではありません(しかし、それらは合理的に技術的です)。したがって、競合、デッドロックなどのスレッドの問題を表すために使用できるダイアグラムのタイプは何ですか?いくつかの例は非常に便利です。競合などのスレッドの問題を視覚化するのに最適なダイアグラムのタイプは何ですか?

+0

どの言語とプラットフォームですか? Visual Studio 2010 Beta 1には、スレッドのパフォーマンスのデバッグとビジュアライゼーションに関する新機能があります。 –

+0

これはJavaアプリケーションです。しかし、VS 2010上のポインタありがとう。私はそれを確かめるでしょう。 – akirekadu

答えて

3

Doug Lea(Javaでの並行プログラミング)では、スレッドの列に垂直なタイムラインが使用され、その後、 列の行は、任意の時点で状態を取得します。

行の連続は一連のイベントをキャプチャします。

問題の多くは、 の可能な状態変更のさまざまな置換を考慮する必要があるということです。

これらの図のPowerPointアニメーション版があなたの心に留めている視聴者に役立つかどうかは疑問です。

3

同じように、データグラムレベルでネットワーク通信を示します。

たとえば、スレッドごとに1つのタイムラインを描画し、次にクロススレッド通信は、1つの送信ポイントでこれらのタイムラインを接続し、もう一方の受信ポイントで受信するラインで構成されます。

+1

タイミング図を意味していますか? –

+0

@ジョン - はい、私はそれがそのような図面の人気のある用語であることは知らなかった。 –

+0

@いいえ、ありがとう、ありがとう。あなたが共有できるサンプルがありますか? – akirekadu

0

ダイアグラムである必要がない場合は、簡単な(冗長な)プログラムを書くことができます。どのような教科書でも同時性/デッドロックの問題を教える方法と同じです。

1

リソースとスレッド間の依存関係を図式化するのに役立つグラフを待つことができます。

0

おそらく、UMLのシーケンスダイアグラムが最適です。複数のスレッドを表示するために、各スレッドにはスレッドの開始と終了(終了はバーの下のXです)を示す垂直バーがあります。縦棒の間の矢印はスレッド間でやりとりされるメッセージを示し、矢印はスレッド自体を呼び出しているスレッドを示します。

いくつかの例については、http://www.agilemodeling.com/artifacts/sequenceDiagram.htm

関連する問題