我现有的代码使用了一些特定于线程的密钥。我打算现在扩展这个代码,这需要创建越来越多的这样的密钥。但是pthread支持每个进程大约1024个密钥,因为在此限制之后没有创建密钥,这给我带来了问题。关于如何在不使用密钥的pthread实现的情况下实现最佳功能的任何建议?
答案 0 :(得分:1)
#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的包装器。