0

我的一个现有代码使用了一些线程特定的键。我打算现在扩展此代码,这需要创建越来越多的此类键。但是 pthread 每个进程支持大约 1024 个密钥,因为在此限制之后没有创建密钥,这给我带来了问题。关于如何在不使用键的 pthread 实现的情况下实现最佳相同功能的任何建议?

4

1 回答 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 回答