システムの問題をデバッグしているときに、ボトルネックの原因となっているスレッドの競合を発見しました。この問題を扱っている他の人々にこの現象を説明する必要があります。それらのいくつかは開発チームからのものではありません(しかし、それらはかなり技術的です)。では、競合、デッドロックなどのスレッドの問題を表すために、どのような種類の図を使用できますか?いくつかの例は非常に役立ちます。
5 に答える
同じように、データグラムレベルでネットワーク通信を図解します。
たとえば、スレッドごとに1つのタイムラインを描画すると、クロススレッド通信は、一方の送信ポイントともう一方の受信ポイントでそれらのタイムラインを接続するラインで構成されます。
Doug Lea(Javaでの同時プログラミング)は、スレッドの列を持つ垂直タイムラインを使用し、列の行は任意の時点での状態をキャプチャします。
一連の行は、一連のイベントをキャプチャします。
問題は、議論の多くが、起こりうる状態変化のさまざまな順列を考慮する必要があるということです。
これらの図のPowerPointアニメーションバージョンが、あなたが考えている聴衆に役立つかどうか疑問に思います。
待機グラフは、リソースとスレッド間の依存関係を図解するのに役立ちます。
ダイアグラムである必要がない場合は、単純な(詳細な)プログラムを作成できます。教科書が並行性/デッドロックの問題を教えるのと同じように。
UMLのシーケンス図がおそらく最良の選択です。複数のスレッドを表示するために、各スレッドには、スレッドの開始と終了(終了はバーの下部にあるX)を示す垂直バーがあります。垂直バーの間の矢印はスレッド間で渡されるメッセージを示し、それ自体を指す矢印はスレッドがそれ自体を呼び出すことを示します。
いくつかの例については、http ://www.agilemodeling.com/artifacts/sequenceDiagram.htmを参照してください。