パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

本物のPOSIXスレッドライブラリ」記事へのコメント

  • ここ [redhat.com]簡単に読んでみたのですが、性能以外の部分では
    1. スレッド毎に異なる signal handler が持てる
    2. スレッドレジスタを設ける
    という点が変わるようです。

    1.
    ほとんどの UNIX 系 OS はスレッド毎に異なる signal mask を持てるが、signal handler 自体はプロセスに1つです。 スレッド毎に signal handler を持てると、Windows の構造例外のように「__try の中で起きた signal は __catch 節でキャッチする」ようなプログラムスタイルが可能になるかも。

    2.
    スレッド固有の情報を指す専用レジスタを導入するようですね。
    スレッド構造体 or Thread Local Strage (TLS) の開始ポイントなどを指すレジスタがあって、 ユーザープロセス側はそのレジスタを読めば 自分がどのスレッドか分かるというものだと 思われます
    pthread_self API とか GetCurrentThread API を 呼び出す必要がなくなるし、 TLS へのアクセスが高速化されるので、 サーバーサイドのマルチスレッドプログラムが 高速化できますね。

    ただ、その特定レジスタはユーザープログラム側で値を破壊しないようにする必要があります。 コンパイラ & ライブラリの変更も必要です。
    でも 以前のバイナリとの下位互換性はどうするのでしょう?
    OS かスレッドライブラリがプログラムのバージョン情報を取得して、スレッドレジスタを提供するかどうか変えるのかしらん? # x86 は FS レジスタが、すでにスレッドレジスタとして使われているからあまり関係ない?
    --
    コンタミは発見の母

私はプログラマです。1040 formに私の職業としてそう書いています -- Ken Thompson

処理中...