To use thread pooling, the work items and all the functions they call must be thread-pool safe. A safe function does not assume that thread executing it is a dedicated or persistent thread. In general, you should avoid using thread local storage...
Кто может объяснить, почему именно нельзя использовать TLS, и к каких случаях всё-таки можно (раз уж они пишут "in general...")? Вроде как интуитивно понимаю, что причина может быть в том, что если нить заблокируется при вводе-выводе, например, то она может "ожить" потом с другим TLS, правильно?
И ещё, а как тогда быть с C++ exceptions? Они ведь вроде frame в TLS хранят, нет?