Concurrencyデザインとカーナビルート検索

db4o2007-06-14

頭の痛いConcurrencyデザインを考えていると、どうにもカーナビのルート検索に見えてくる(写真参照)。

例えば2つのグループがそれぞれの旅程を作ってドライブに出かけるとする。ロックという概念は、旅行やルート検索には無い・・・。例えて見ると、かなり強引だが、ドライブの途中で見つけたアンティークを扱っているお店で、素晴らしい商品を見つけて、それを帰りまでとっておいてもらう、そんなシナリオにしよう。山田さんは西から東へ、鈴木さんは東から西へスタート。鈴木さんは途中立ち寄ったアンティークショップEで見つけた花瓶を、帰りまでキープしておいてもらうことにして、先へ進む。一方山田さんは、アンティークショップDで見つけた花瓶をキープして次へ。山田さんが次に向かった先は、アンティークショップE。そこで鈴木さんがキープしている花瓶を気に入ったので、両方買うことにした。なんとか既にキープしている山田さんを説得しようと店で待つ。その頃、山田さんはいろいろ回ってアンティークショップE(間違えた)Dにたどり着き、鈴木さんがキープした花瓶を気に入る。山田さんも両方気に入ったので、鈴木さんを説得しようと店で待つが、待てど暮らせど、キープした主は現れない・・・。

ルート検索ではないなあ。でも、妙に似ていると感じるわけです。そしてこんなことがConcurrentデザイン時、または実行時にシミュレーションして、最適な呼び出し(旅程)を組めたら、それって結構すごいかも・・・。