Re[3]: Потокобезопасен ли класс std::vector ?
От: aid2003  
Дата: 31.03.04 16:52
Оценка:
Здравствуйте, Mr. None, Вы писали:

MN>Здравствуйте, Reyst, Вы писали:


R>>Здравствуйте, aid2003, Вы писали:


MN>В своё время я написал небольшой шаблон — потокобезопасная очередь. Если надо, давай мыло, скину — выложить в сеть некуда .


kllbzz@yandex.ru

заранее благодарен
Потокобезопасен ли класс std::vector ?
От: Павел Кузнецов  
Дата: 01.04.04 05:47
Оценка: 6 (1)
#Имя: FAQ.cpp.stl.vector.multithread
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/
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Re[2]: Потокобезопасен ли класс std::vector ?
От: Шахтер Интернет  
Дата: 02.04.04 02:14
Оценка: +1
Здравствуйте, Павел Кузнецов, Вы писали:

ПК>Павел Кузнецов

ПК>MetaCommunications Engineering
ПК>http://www.meta-comm.com/engineering/


<offtop>

ЭЭЭ. Я правильно понимаю, что можно поздравлять с новым местом работы?

</offtop>
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[3]: Потокобезопасен ли класс std::vector ?
От: Павел Кузнецов  
Дата: 02.04.04 02:32
Оценка:
Здравствуйте, Шахтер, Вы писали:

Ш>ЭЭЭ. Я правильно понимаю, что можно поздравлять с новым местом работы?


Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.