APUE 2eの章12.5によると:関数が複数のスレッドに関してリエントラントである場合スレッドの違い安全で非同期シグナル安全
、我々はそれがスレッドセーフであると言います。しかし、シグナルハンドラに関して関数がリエントラントであるかどうかはわかりません。非同期シグナルハンドラから再入力するのが安全な関数は、非同期シグナルセーフです。
私の質問があり
Q1:
"一般的な再入" のコンセプトは、(すべての状況で再entrantcyを意味する)はありますか?存在する場合、マルチスレッドと非同期信号の両方に関してのみリエントラントに等しい一般的なリエントラントは存在するか?あるいは、一般的なリエントラントについて話すときに考慮すべき3番目の条件がありますか?
Q2:
スレッドの安全性は明らかである非同期シグナルの安全性を、意味するものではありません。しかし、非同期信号の安全性は確実にスレッドの安全性を暗示していますか?私はたくさんのグーグルで探そうとしていますが、人々はそれがそうであると言っていますが、私はそれのための情報源を見つけることができません。
Q3:
Q1とQ2の両方への答えがイエスであれば、私は一般的な再入だけで非同期シグナル安全に等しいと思いますか?
この例が見つかりました:https://en.wikipedia.org/wiki/Reentrancy_(computing)wikiの2番目のスワップ関数を参照してください。これは非同期シグナル安全ですが、スレッドセーフではありません。だから、私は非同期シグナル安全はスレッドセーフではないと思う。 – PickBoy
良い点は、反例です!かなり工夫された。 –