【プログラムネタ】ピタゴラスイッチアンチパターン
2008年06月04日03:40
・ ピタゴラスイッチアンチパターン
並列処理プログラムを作成している時、何かの結果として次の処理を呼び出すようにすると、最終的にgoto文を多用したプログラムのように読みづらくなって破綻してしまうこと。 これは例えるならば ピタゴラスイッチの複雑な機械(Rube Goldberg Machine)の様なもので、プログラムはどんどん複雑になっていく。
Rube Goldberg Machine
http://en.wikipedia.org/wiki/Rube_Goldberg
並列処理を行うときは、必ず全処理の文脈を把握し管理するスレッドを作成しなければならない。
・会議やりすぎアンチパターン
並列処理プログラムを作成している時、スレッド間のコミュニケーションをメッセージキューを使わずに行うこと。 結果的に各スレッド間で待ち合わせ時間が長くなりレスポンスが悪くなる。 そればかりか、期待したスレッドが到着しないことで、他のスレッドが全部待ち状態になり、処理がとまってしまうこともある。 これは会議ばかりして話が進まなくなってしまう会社の様なものだ。 メッセージキューを使い、会議をせずに仕事を進めるべきである。
レースコンディション
http://en.wikipedia.org/wiki/Race_condition
・レースコンディションが発生しないようにプログラムを組むというのは、至難の業だということがわかってきた。
並列処理プログラムを作成している時、何かの結果として次の処理を呼び出すようにすると、最終的にgoto文を多用したプログラムのように読みづらくなって破綻してしまうこと。 これは例えるならば ピタゴラスイッチの複雑な機械(Rube Goldberg Machine)の様なもので、プログラムはどんどん複雑になっていく。
Rube Goldberg Machine
http://en.wikipedia.org/wiki/Rube_Goldberg
並列処理を行うときは、必ず全処理の文脈を把握し管理するスレッドを作成しなければならない。
・会議やりすぎアンチパターン
並列処理プログラムを作成している時、スレッド間のコミュニケーションをメッセージキューを使わずに行うこと。 結果的に各スレッド間で待ち合わせ時間が長くなりレスポンスが悪くなる。 そればかりか、期待したスレッドが到着しないことで、他のスレッドが全部待ち状態になり、処理がとまってしまうこともある。 これは会議ばかりして話が進まなくなってしまう会社の様なものだ。 メッセージキューを使い、会議をせずに仕事を進めるべきである。
レースコンディション
http://en.wikipedia.org/wiki/Race_condition
・レースコンディションが発生しないようにプログラムを組むというのは、至難の業だということがわかってきた。
コメント一覧