Programming,  컴퓨터와 인터넷

TSD(Thread Specific Data)를 사용하는 개략적인 방법

1. 변수 선언
pthread_once_t init_sess_key_once = PTHREAD_ONCE_INIT;
pthread_key_t sess_key;

2. key 생성하는 함수 정의
pthread_key_create(&sess_key, destructor_func)를 호출하는 초기화 함수 init_sess_key() 정의

3. 여러 번 호출되는 위치에서 1번만 호출되도록 강제함
pthread_once (&init_sess_key_once, init_sess_key);

2. TSD 초기화
sess_data_p = malloc(sizeof (struct sess_data));
pthread_setspecific(&sess_key, sess_data_p);

3. TSD 사용
sess_data_p = pthread_getspecific(sess_key);

4. TSD 사용 해제
pthread_setspecific(&sess_key, NULL);
free(sess_data_p);

5. key 제거
pthread_key_delete(&sess_key);

* 5번 뒤에 3이나 4를 수행하지 말 것. Pthread 구현에 따라서는 심각한 부작용이 발생할 수도 있음.

Reference: http://docs.sun.com/app/docs/doc/816-5137/6mba5vpj7?a=view

답글 남기기