33853
複数のスレッドが共有リソースにアクセスしたとき、  
デッドロックが発生しない設計になっていることを示す  
設計資料の作り方に困っています。

ひとまず、共有リソースの種類と、各スレッドがどういう処理の中でリード/ライトアクセスするか  
の洗い出しまでは終わりました。

リソースのロック状態、処理イベントで状態遷移図をつくってみたのですが、  
他のスレッドが共有リソースをロックしていたら、  
・ロック取得に失敗してリトライする（ノンブロッキングの場合）  
・またはロックが開放されるまで待ち続ける（ブロッキングの場合）  
という当たり前を記載しているだけで  
デッドロックが発生しない説明になってないと思えてきました。

一般的には、どのような種類の設計書（タイミングチャート？シーケンス図？その他？）を作成してデッドロックが発生しない設計かを検証するのか教えていただけないでしょうか？

特に具体的な資料が表示してるURLを教えていただければ、大変助かります。
CC BY-SA 3.0
2017-04-07T19:36:33.987
33849
2017-04-07T21:59:07.793
2017-04-07T21:01:36.970
21437
21437
question
linux c
共有リソース、デッドロック検証はどんな種類の設計資料が必要ですか？
まず[デッドロック](https://ja.wikipedia.org/wiki/%E3%83%87%E3%83%83%E3%83%89%E3%83%AD%E3%83%83%E3%82%AF#.E5.9B.9E.E9.81.BF.E6.96.B9.E6.B3.95)は

> 基本的にデッドロックは資源数が2以上の場合に発生する。資源数が1の場合、～デッドロックは発生しない。

という前提があります。その上でいくつかの[回避策](https://ja.wikipedia.org/wiki/%E3%83%87%E3%83%83%E3%83%89%E3%83%AD%E3%83%83%E3%82%AF#.E5.9B.9E.E9.81.BF.E6.96.B9.E6.B3.95)がか挙げられていますので、システムに合わせて設計を行ってください。  
一般的で確実なのは、１番目に挙げられている方法、ロックする順番を規定することです。この場合の設計資料としても、順番を記載すれば明確になります。
CC BY-SA 3.0
2017-04-07T21:59:07.793
33853
2017-04-07T21:59:07.793
4236
33849
answer