PTHREAD_KEY_CREATE(3)

명칭
pthread_key_create - thread 고유의 데이터 키의 작성

프로그램 라이브러리
libc_r

서식
<pthread.h> int pthread_key_create(pthread_key_t *key, void (*destructor)(void *))

해설
pthread_key_create() 함수는, 프로세스내의 모든 thread에 가시의 thread 고유의 데이터 키를 작성합니다. pthread_key_create() 에 의해 제공된 키의 값은, thread 고유의 데이터의 위치를 나타내기 위해서(때문에) 사용되는 불투명한 오브젝트입니다. 다른 thread에 의해 같은 키치가 사용되는 것이 가능합니다만, pthread_setspecific() 에 의해 키에 묶을 수 있었던 값은 thread마다를 기준에 메인트넌스되어 호출하고 있는 thread가 살아 있는 동안 존속합니다.

키의 작성시에는, 모든 액티브한 thread내의 새로운 키에, 값 NULL 가 관련지을 수 있습니다. thread의 작성시에는, 새로운 thread내의 모든 정의제의 키에, 값 NULL 가 관련지을 수 있습니다.

임의의 소멸자 함수는, 개개의 키의 값과 관련지을 수 있을 수가 있습니다. thread의 종료시에, 키치가 NULL 가 아닌 소멸자의 포인터를 가져, 한편 thread를 키에 관련지을 수 있었던 NULL 가 아닌 값을 가지고 있는 경우에는, 현재 관련지을 수 있고 있는 값을 유일한 인수로서 가리켜지고 있는 함수가 불려 갑니다. thread의 종료시에 그 thread를 위한 1 개 이상의 소멸자 함수가 존재하는 경우에는, 소멸자의 호출의 순서는 미규정입니다.

소멸자에 관련지을 수 있던 모든 NULL 가 아닌 값을 위해서(때문에), 모든 소멸자가 불려 간 다음에, 아직 몇개의 관련지을 수 있었던 소멸자를 가지는 NULL 가 아닌 값이 있는 경우에는, 그 과정이 반복해집니다. 최악이어도 [PTHREAD_DESTRUCTOR_ITERATIONS] 회의 소멸자의 호출의 반복의 후에, 아직 더 몇개의 관련지을 수 있었던 소멸자를 가지는 NULL 가 아닌 값이 있는 경우에는, 실장은 소멸자의 호출을 중지합니다.

반환값
문제가 없는 경우는, pthread_key_create() 함수는, 새롭게 작성된 키의 값을 key 그리고 지정된 장소에 격납해, 0 을 돌려줍니다. 문제가 있는 경우는, 그 에러를 나타내기 위해서(때문에) 에러 번호가 돌려주어집니다.

에러
pthread_key_create() (은)는 이하의 경우에 실패합니다.

[EAGAIN]
    다른 thread 고유의 데이터 키를 작성하기 위해서 필요한 리소스가 시스템에 부족합니다. 또는, 1 개의 프로세스마다의 키의 총수에 대한 시스템의 제한 [PTHREAD_KEYS_MAX] 를 초과했습니다.

[ENOMEM]
    키를 작성하기 위한 충분한 메모리가 없습니다.

관련 항목
pthread_getspecific(3), pthread_key_delete(3), pthread_setspecific(3)

표준
pthread_key_create() 하 p1003.1-96 에 적합하고 있습니다.