Gauche > Archives > 2022/11/02

2022/11/02 10:53:11 UTCkoguro
#
parameterがスレッドローカルでなくなるということは、current-output-portを変更すると全スレッドに影響するということですか?
2022/11/02 20:43:36 UTCshiro
#
parameterizeしていれば影響はその動的スコープだけに限定されます。
#
ただ、primordial threadのグローバルで変えた時にうっかり他のスレッドに影響が出るといやなので、慣用的に使われてきたいくつかのパラメータについては、スレッド作成時に暗黙にparameterizeされることにした方が良さそうですね
2022/11/02 21:37:32 UTCkoguro
#
なるほどわかりました。今のところ影響を受けるコードはないんですが、他にもjson-*-handlerとかスレッドセーフでなくなると、ちょっと気を遣うかなあと思いました。
2022/11/02 21:40:48 UTCshiro
#
原則、parameterizeだけを使ってる限りは安全で、mutateする時は普通に変数をmutateするのと同じ危険がある (スコープの範囲に影響を与えるという意味で) と考えると良いと思います。なので新規コードについては心配してないんですが、これまでのコードの安全性を検証するのは別途補助が必要そうですね。
#
mutationに関しては今でも実は正しく使うのは難しくて、例えばスレッドプールに仕事を振った時にcallerの設定がworkerに見えてるつもりが見えてなかった、なんてことも起き得るんですよね。