Re[4]: STL-вский vector и снихронизация потоков
От: realbob  
Дата: 04.08.05 18:45
Оценка:
Удалено избыточное цитирование. — SchweinDeBurg

Здравствуйте, rus blood, Вы писали:

RB>Итератор I остается старым -> инвалидируется...


Т.е. Вы утверждаете, что синхронизация в данном случае невозможна?
Так же думает и Psyton.
Ну а зачем тогда объекты синхронизации? Они — то как раз и имеют цель предотвратить
доступ к вектору когда идет запись в него, иначе говоря предназначенны сделать использоване обычной коллекции потоко-безопасным.
Если бы Ваше предполжение о перераспределении памяти было верно, то был бы нерабочим элементарный код:
       vector<int> v;
       vector<int>::iterator I;
       for(i = 0; i < 10000; i++)
            v.push_back(1);
       for(I = v.begin(); I < v.end(); I++)
            //используем I.

       for(i = 0; i < 10000; i++)
            v.push_back(2); //Память перераспередлилась.

       for(I = v.begin(); I < v.end(); I++)
            //используем I. <<тут была бы ошибка. А это, согласитесь, мягко говоря не так.

Я предположил другую причину.
И нашел решение которое реально заработало в моем коде.
Не изобретай лишних сущностей без крайней необходимости!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.