POSIXのリエントラントと非同期シグナル安全
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/11/26 23:57 UTC 版)
「リエントラント」の記事における「POSIXのリエントラントと非同期シグナル安全」の解説
POSIX標準には、"_r" の接尾辞が付けられたC言語関数群が用意されている。これらは従来の標準Cライブラリ関数のリエントラントバージョンである。規格では、「リエントラント関数」を以下のように定義している。 In POSIX.1c, a "reentrant function" is defined as a "function whose effect, when called by two or more threads, is guaranteed to be as if the threads each executed the function one after another in an undefined order, even if the actual execution is interleaved" (ISO/IEC 9945:1-1996, §2.2.2). 2つ以上のスレッドから呼ばれたときの結果が、たとえ実際の実行がインターリーブ(交互配置)されたものであったとしても、スレッドがそれぞれ未定義の順序でその関数を次々に実行したかのようであることが保証される関数。 つまり、マルチスレッド環境下での実行順序非依存性や並列実行可能性(スレッドセーフ)の意味でリエントラントという用語を規定しており、非同期シグナル安全性に関しては述べられていない。 一方、POSIXでは非同期シグナル安全な118の関数を規定している。シグナルハンドラ内部では非同期シグナル安全でない関数は呼び出してはいけない。
※この「POSIXのリエントラントと非同期シグナル安全」の解説は、「リエントラント」の解説の一部です。
「POSIXのリエントラントと非同期シグナル安全」を含む「リエントラント」の記事については、「リエントラント」の概要を参照ください。
- POSIXのリエントラントと非同期シグナル安全のページへのリンク