google-code-prettify

2009-06-18

プログラムのスキルのうち、最も修得が難しいスキルは何か

プログラマに必要なスキルは数多くあると思うが、一番修得しにくいスキルはダントツで、
「並列動作するシステムを、レースコンディションやデッドロックが無いように正しく作る」
ではないかと思う。

並列動作のためのデザインパターン本があればいいのに。
あまり売れるとは思えないけど、私は欲しい。

3 件のコメント:

Ryo さんのコメント...

http://www.hyuki.com/dp/dp2.html
これとかじゃなく、もっとディープな感じ?

sakurai さんのコメント...

考えてみたら、自分が知りたいのは、その本にのっているようなデザインパターンをRTOSやpthreadのAPIを使ってどう実装するのかという話のような気がしてきました。

例えば、
・threadAが、worker threadBに処理を依頼する
・threadAは、worker threadBが処理を終了するのをタイムアウト付きで待つ
といった場合を考えます。

この場合には、以下のような点を考慮しなくてはなりません。
・threadAの待ちを実現するのに、RTOSで言う所の何のリソース(セマフォとか)を使えば良いのか。
・そのRTOSのリソースは、どこに存在するのか。
・threadAがタイムアウトした後に、何をしなくてはならないか。
・threadAが一度タイムアウトして再度依頼を出したとする。前回出した依頼の結果を間違って受けとらないためにはどうすれば良いか。
・worker threadBが受けとる依頼情報は、元の依頼の参照なのかコピーなのか。

sakurai さんのコメント...

とりあえず、その本はおもしろそうなので、読んでみます。
情報ありがとうございます!