TOKUNAGA Hiroyuki
tkng****@xem*****
2005年 9月 1日 (木) 18:34:01 JST
On Thu, 1 Sep 2005 02:14:28 -0700 Jun Inoue <jun.l****@gmail*****> wrote: > ・write/ss で、SigScheme 特有の事情 (procedure, values が表示される) > によるバグと、hash table が伸長する場合の戻り値の勘違いによるバグを直 > しました。 > > ・prime.scm などの作業中のものがいくつか混ざってます。全部 trivial な > 変更。PRIME 自体はまだうまく動いてないです…全体構造を理解してないから > 作業が遅い。 > > ↑が sscm-write-ss3.diff。↓が uim-lock.diff。 > > ・uim_find_context() にバグがあったので直そうとすると、ちょうど徳永さ > んが修正を commit されたのでやめようかと思ったんですが、違うやり方なの > で一応投げてみます。ミソは sig_atomic_t より小さいオブジェクトの > read/write は atomic であると仮定するというところです。[1]によれば、大 > 抵の環境ではポインタは atomic object のようなので、これでロックが減ら > せると思ったんですが、ちょっとキモいですかね… find_contextのバグは悲惨でしたね…。 # 加藤さん、修正ありがとうございました。 なにも考えずにグローバル変数をいじるところはとりあえずロックしてみるか、 程度の考えでロックのコードを追加していました。GNU C libraryがサポートす る全てのPOSIXシステムにおいてポインターの読み書きはatomicであると仮定し てよい、という事は、put_context_idとuim_find_contextではいちいちロックを かける必要は無さそうですね。というわけで、この2つの関数からはロックの コードを削ろうと思うのですが、どうでしょうか? -- 徳永拓之 tkng at xem jp