Здравствуйте, Mr. None, Вы писали:
MN>Здравствуйте, Reyst, Вы писали:
R>>Здравствуйте, aid2003, Вы писали:
MN>В своё время я написал небольшой шаблон — потокобезопасная очередь. Если надо, давай мыло, скину — выложить в сеть некуда .
kllbzz@yandex.ru
заранее благодарен
A>В МСДНе не понятно написано
Класс или шаблон, аналогичный std::vector по интерфейсу, сделать "потокобезопасным" сам по себе невозможно по принципиальным соображениям. Например:
void f(std::vector<int>& v)
{
std::size_t sz = v.size();
for (std::size_t i = 0; i < sz; ++i)
std::cout << v[[i];
}
Вне зависимости от степени "потокобезопасности" std::vector, без дополнительной синхронизации, функция f не будет "потокобезопасной", если есть хотя бы один поток, который может модифицировать v одновременно с выполнением f. В самом деле: если после получения v.size() другой поток, например, уменьшит размер вектора, то произойдет обращение к "чужой" памяти.
Никак, кроме "нормальной", внешней по отношению к std::vector, синхронизации, это не "лечится".
--
Павел Кузнецов
MetaCommunications Engineering
http://www.meta-comm.com/engineering/
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Здравствуйте, Павел Кузнецов, Вы писали:
ПК>Павел Кузнецов
ПК>MetaCommunications Engineering
ПК>http://www.meta-comm.com/engineering/
<offtop>
ЭЭЭ. Я правильно понимаю, что можно поздравлять с новым местом работы?
</offtop>
... << RSDN@Home 1.1.0 stable >>
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен