Модифицирование списка observer-ов во время их перечисления
От: kjam Украина  
Дата: 20.09.10 18:37
Оценка:
Есть объект, на него подписываются несколько разных observer-ов. Когда им приходит уведомление, в результате действий одного из observer-ов подписывается еще один. Список обнаруживает, что его изменили во время итерации и падает на assert-е (вполне обоснованно, ИМХО). Как с таким обычно борются?

Мне в голову приходит два варианта: во-первых, можно делать копию списка (copy-on-write) и итерироваться по неизменяемой копии; во-вторых можно откладывать выполнение действий, которые могу привести к изменению списка observer-ов, до следующего витка eventloop-а. Чем может быть чреват каждый из этих вариантов?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.