自己实现pthread键

时间:2014-02-11 11:50:27

标签: c pthreads thread-local-storage

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

1 个答案:

答案 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的包装器。