河野真治 @ 琉球大学情報工学です。

In article <YAS.06Feb24183247@kirk.is.tsukuba.ac.jp>, yas@is.tsukuba.ac.jp (Yasushi Shinjo) writes
> > >   15:             non_full.wait;
> >   この条件ごとの条件変数で待つとかがクラシックね。そういう研究を
> > やってたりします。河野さんは知っている。
> 
> 制限した方が、メモリの一貫性などまで考えると効率的なコードが
> 出せるし、あと、再帰禁止までいければ、バグも書きにくくなりま
> す。(ついでに、まっとうなプログラムも書きにくくなったりする
> んだけれど。)

このあたり、特に conditional variable とかって、僕は「直観的
に変だ」って感じているんだよね。特に「bounded buffer」。
そういうものが同期機構として入るのって変だと思う。

この掃いて捨てるほど沢山ある同期プリミティブの一つとして、久
野さんの集合で起きる奴を指定するってのがあるわけで、やっぱり
「さらに増やしてどうするの?」という気がする。

> 昔からある問題は、全然解決してないけれどね。相変わらず、わけ
> が分からないプログラムが簡単にかけます。新人が苦労する所も同じ。
> あまり進歩していません。

この原因でもあるわけだし。

突き詰めれば、割込み禁止/test and setになるわけなんだから、
そこから、プロセスキューの処理、スケジューラーまでに到達する、
なんらかの一貫した実装があるべきでしょ? ハードウェアでは、主
に arbitor で実装している。だとすれば、ソフトウェアもそうあ
るべきだと思う。

monitor とかconditional variable とかで、わけわからない情報
隠蔽するより、process queue を reflective にいじらせろって僕
は思う。そうすれば、割込み禁止/test and set まで落せるから。
ってなわけで、Continuation をいじっているわけなんだけど。

僕自身は、select/merge (つまりarbitor) を使って、lock
primitive を避けるスタイルが好きです。昔から。それが
一番、自然だと思う。

もっとも「思う」から、論文にまで持って行くには、かなり
距離があるわけだけど。

---
Shinji KONO @ Information Engineering, University of the Ryukyus
河野真治 @ 琉球大学工学部情報工学科