pthread_attr_init() - スレッド属性オブジェクトの初期化

標準

標準/拡張機能 C/C++ 依存項目

POSIX.4a
Single UNIX Specification、バージョン 3

両方

POSIX(ON)

形式

#define _OPEN_THREADS
#include <pthread.h>

int pthread_attr_init(pthread_attr_t *attr);
SUSV3:
#define _UNIX03_THREADS
#include <pthread.h>

int pthread_attr_init(pthread_attr_t *attr);

機能説明

デフォルト値が次のとおりのデフォルト・スレッド属性を 使用して attr を初期設定します。
stacksize
STACK ランタイム・オプションから継承されます
detachstate
切り離し解除
synch
同期
重み
重い

スレッド属性オブジェクトを使用して、アプリケーションのスレッドの特性を 管理できます。これは、生成時にスレッドに使用される値の集合を定義します。スレッド属性オブジェクトを確立すると、各スレッドごとに特性を定義しないで、同じ一連の特性をもつ多数のスレッドを作成できます。複数のスレッド属性オブジェクトを定義できます。スレッドの優先順位はすべて同じです。

スレッド間でスレッド属性オブジェクトを共用した場合には、スレッド属性 オブジェクトがアプリケーションのストレージで定義されるので、アプリケーション は必要な同期を提供する必要があります。
注: XPLINK アプリケーションは 2 つのスタック、上位アドレス方向へと増加するスタックおよび下位アドレスの方向へと増加するスタックを使用します。"stacksize" は、常に上位アドレス方向へと増加するスタックのサイズを指します。下位アドレスの方向へと増加するスタックのサイズは、THREADSTACK ランタイム・オプションから継承されます。

戻り値

正常に実行された場合、pthread_attr_init() は 0 を戻します。

正常に実行されなかった場合、pthread_attr_init() は -1 を戻して、errno を次のいずれかの 値に設定します。
エラー・コード
説明
ENOMEM
スレッド属性オブジェクトを作成するための使用可能なメモリーが 不十分です。

Single UNIX Specification、バージョン 3 の特殊な動作: 正常に実行されなかった場合、pthread_attr_init() はエラーを示すエラー番号を戻します。

CELEBP10
⁄* CELEBP10 *⁄                                   
#define _OPEN_THREADS                                                           
#include <stdio.h>                                                              
#include <pthread.h>                                                            
                                                                                
void *thread1(void *arg)                                                        
{                                                                               
   printf("hello from the thread¥n");                                           
   pthread_exit(NULL);                                                          
}                                                                               
                                                                                
int main()                                                                      
{                                                                               
   int            rc, stat;                                                     
   pthread_attr_t attr;                                                         
   pthread_t      thid;                                                         
                                                                                
   rc = pthread_attr_init(&attr);                                               
   if (rc == -1) {                                                              
      perror("error in pthread_attr_init");                                     
      exit(1);                                                                  
   }                                                                            
                                                                                
   rc = pthread_create(&thid, &attr, thread1, NULL);                            
   if (rc == -1) {                                                              
      perror("error in pthread_create");                                        
      exit(2);                                                                  
   }                                                                            
                                                                                
   rc = pthread_join(thid, (void *)&stat);                                      
   exit(0);                                                                     
}                                                                               

関連情報