在流行的现代操作系统中,是否存在线程本地存储的已知大小限制?

时间:2015-08-31 11:30:39

标签: c++ c multithreading thread-local-storage

当我使用thread_local_Thread_local__thread__declspec(thread)时,编译器似乎在创建线程时分配线程本地存储并将地址存储在{ {1}}或fs在x86派生系统中注册。

在这种情况下,是否有像线程本地存储溢出'?

这样的东西

1 个答案:

答案 0 :(得分:2)

有限制。每个系统都会有所不同,但在Windows上,有一个有限的数据部分,它是专门映射的线程。这部分的大小是有限的。

旧版本的Windows直接使用它,并且在创建新项目时会失败。

上次我检查Windows 7+时,这已经消失了(操作系统使用1个插槽作为整个DLL - 作为重定向到线程本地映射),但是有一个不同的限制,它限制了可用的唯一插槽的数量。每个加载的DLL都使用了一个插槽,因此可以使用线程本地存储的DLL数量有限制。

另见wikipedia : thread local storage