2014-02-11 65 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]; 

所有这一切都在这里缺少一些包装mimicing的pthread_key* API。

+1

只需提及它,就有一个相应的C11功能'_Treadlocal'。 –