Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Кто-нибудь работал с данными типа __declspec(thread) в VisualC++?

610
12 апреля 2007 года
dimaga
3 / / 20.12.1999
Привет,

Столкнулся с проблемой перехода на многопоточность (в 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) (в плане снижения производительности и увеличения объема оперативной памяти)? Имеются ли ограничения на объем данных с этим спецификатором?
3
12 апреля 2007 года
Green
4.8K / / 20.01.2000
Моё мнение, что static в функциях - это и в однопоточных то приложениях зло, не говоря уж о многопоточных.
Почему бы не писать аккуратно на С++. Ведь static в функциях совершенно не нужен.
Я не особо люблю различного рода расширения MS, а уж __declspec(thread) тем более.

Для твоего примера достаточно ввести какой-нибудь строковый класс, тот же std::string (std::wstring) и никаких проблем. Зачем городить огород с TLS ?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог