09-线程特有数据的实现限制
31.3.5 线程特有数据的实现限制
正如对线程特有数据典型实现过程的描述所揭示的,实现可能要对其所支持的线程特有数据键的数量加以限制。SUSv3 要求至少支持 128(_POSIX_THREAD_KEYS_MAX)个键。应用程序要么通过对PTHREAD_KEY_MAX(定义于<limits.h>)的定义,要么通过调用sysconf(_SC_THREAD_KEYS_MAX),来确定实际支持的键数量。Linux支持多达1024个键。
即使128个键对于大多数应用来说也已经绰绰有余。这是因为,每个库函数应该只会使用到少量的键,通常会只用一个。如果一个函数需要多个线程特有数据的值,通常可将这些值置于一个结构中,并将该结构仅与一个线程特有数据的键关联。