线程局部存储 TLS

本来想通过tid为索引建个表来实现该功能,没想到已经有现成的机制。。


单个线程的特有数据,介于全局变量和局部变量之间。

linux:

方法一:
int pthread_key_create(pthread_key_t *key, void (*destructor)(void*));
int pthread_key_delete(pthread_key_t key);
void *pthread_getspecific(pthread_key_t key);
int pthread_setspecific(pthread_key_t key, const void *value);
方法二:

__thread int i;


Win32
方法一:
DWORD TlsAlloc(VOID);
BOOL TlsFree(
  DWORD dwTlsIndex   // TLS index
);
BOOL TlsSetValue(
  DWORD dwTlsIndex,  // TLS index
  LPVOID lpTlsValue  // value to store
);
LPVOID TlsGetValue(
  DWORD dwTlsIndex   // TLS index
);
方法二:

__declspec( thread ) int tls_i = 1;


参考:https://blog.csdn.net/cywosp/article/details/26469435

猜你喜欢

转载自blog.csdn.net/goalcn/article/details/81005296
TLS