Re[3]: Ошибка - deque iterator not dereferencable .
От: Bell Россия  
Дата: 20.01.09 09:30
Оценка:
Здравствуйте, Аноним, Вы писали:


А>Понятно,но не до конца. Под записью что понимать? Я использую:

А>
А>deque_pBuffers.push_back(pBuffer);
А>deque_pBuffers.push_front(pBuffer);
А>deque_pBuffers.pop_back()
А>


Вместо "запись" лучше использовать "модификация". Все 3 перечисленные выше операции — суть модификации дэка.

А>Только эти операции нужно синхронизировать?


А>Или получение элемента по итератору:

А>
А>deque<sBuffer*>::iterator i;
А>i =  deque_pBuffers.begin();
А>pBuffer = *i;
А>


А>Тоже нуждается в синхронизации?


Если хотя бы 1 поток может модифицировать дэк, то вся работа с ним (с дэком) должна быть синхронизирована. Похоже, что у тебя как раз такая ситуация.
Да, и в этом случае итераторы тоже хранить нельзя, т.к. при модификациях дэка они инвалидируются.
Любите книгу — источник знаний (с) М.Горький
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.