Кто-нибудь работал с данными типа __declspec(thread) в VisualC++?
Столкнулся с проблемой перехода на многопоточность (в Visual C++, win32): большое количество функций содержат статические буфера. Например, такие:
const TCHAR* Va(const TCHAR* pFormat,...)
{
va_list argptr;
static TCHAR string[16384];
memset(string, 0, sizeof(string));
va_start (argptr, pFormat);
_vsntprintf(string, sizeof(string) / sizeof(TCHAR) - 1, pFormat, argptr);
va_end (argptr);
return string;
}
Может, кто-нибудь знает, насколько правильно или неправильно использовать для них __declspec(thread) (в плане снижения производительности и увеличения объема оперативной памяти)? Имеются ли ограничения на объем данных с этим спецификатором?
Почему бы не писать аккуратно на С++. Ведь static в функциях совершенно не нужен.
Я не особо люблю различного рода расширения MS, а уж __declspec(thread) тем более.
Для твоего примера достаточно ввести какой-нибудь строковый класс, тот же std::string (std::wstring) и никаких проблем. Зачем городить огород с TLS ?