2014-02-11 3 views
0

기존 코드는 스레드 특정 키를 사용합니다. 이 키를 더 많이 만들어야하는 지금이 코드를 확장하려고합니다. 그러나 pthread는 프로세스 당 약 1024 개의 키를 지원합니다.이 한계로 인해 키가 생성되지 않아 문제가 발생합니다. 키의 pthread 구현을 사용하지 않고 최상의 기능을 구현하는 방법에 대한 제안 사항은 무엇입니까?pthread 키의 자체 구현

+0

귀하의 질문은 의미가 너무 넓습니다. 너 뭐 해봤 니? 어떤 문제가 당신을 괴롭 히고 있습니까? –

답변

1

사용 Thread-Local storage :

#define KEYS_MAXIMUM 2048 

__thread void * keys[KEYS_MAXIMUM]; 

가 소멸자 당신이 사용할 수 있도록하려면 :

typedef struct 
{ 
    void * p; 
    void (*f) (void *); 
} Key 

__thread Key * keys[KEYS_MAXIMUM]; 

모든 것을 여기에 누락 pthread_key* API를 mimicing 일부 래퍼입니다.

+1

그냥 언급하자면 해당 C11 기능인 '_Treadlocal'이 있습니다. –