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