pthread_condattr_setpshared(3C) は、条件変数のスコープをプロセス専用 (プロセス内) またはシステム共通 (プロセス間) に設定します。
int pthread_condattr_setpshared(pthread_condattr_t *cattr, int pshared);
#include <pthread.h> pthread_condattr_t cattr; int ret; /* all processes */ ret = pthread_condattr_setpshared(&cattr, PTHREAD_PROCESS_SHARED); /* within a process */ ret = pthread_condattr_setpshared(&cattr, PTHREAD_PROCESS_PRIVATE);
共有メモリー内に pshared 属性を生成し、その条件変数を PTHREAD_PROCESS_SHARED に設定した場合、この条件変数は複数のプロセスのスレッド間で共有できます。
mutex の pshared 属性を PTHREAD_PROCESS_PRIVATE に設定した場合、その mutex を操作できるのは同じプロセスで生成されたスレッドだけです。PTHREAD_PROCESS_PRIVATE はデフォルト値です。PTHREAD_PROCESS_PRIVATE は、局所条件変数として動作します。PTHREAD_PROCESS_SHARED の動作は、大域条件変数に相当します。
pthread_condattr_setpshared () は、正常終了時に 0 を返します。それ以外の戻り値は、エラーが発生したことを示します。以下の条件が検出されると、この関数は失敗し、対応する値を返します。
EINVAL
説明:cattr または pshared の値が無効です。