Re[9]: Как правильно реализовать алгоритм?
От: kondrik  
Дата: 11.07.07 14:40
Оценка:
Здравствуйте, ilnar, Вы писали:

I>как я понял автора задачи, в список данные только добавляются. значит сами данные меняться не будут.


Список может и уменьшаться и увеличиваться, т.к. пока он не достигнет какогото размера — он увеличивается, а когда достиг — закольцовывается (старые данные удаляются, а на их место пишутся новые). Поэтому нужно весь список блокировать.
.
Re[10]: Как правильно реализовать алгоритм?
От: ilnar Россия  
Дата: 11.07.07 17:02
Оценка:
Здравствуйте, kondrik, Вы писали:

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


I>>как я понял автора задачи, в список данные только добавляются. значит сами данные меняться не будут.


K>Список может и уменьшаться и увеличиваться, т.к. пока он не достигнет какогото размера — он увеличивается, а когда достиг — закольцовывается (старые данные удаляются, а на их место пишутся новые). Поэтому нужно весь список блокировать.


тогда другой вариант с пулом модификаций
или с тем же слепком, только если данные заменяются, отчуждаешь из общего списка заменяемые данные, если они у кого-то в слепке и в его место заносишь другие данные. Можно применить shared pointer с общей для всех блокировкой при подсчете кол-ва ссылок (объекты синхронизации — дорогие объекты): ссылки со слепков (если несколько) останутся, в основном списке на его место длругие данные. Придется смириться, что на некоторое время хранимых данных будет больше (в самом худшем случае в 2 раза) чем твое ограничение.

рекомендации: изучайте классические подходы решения задач. велосипеды давно придуманы. все идеи, что я писал, применяются в СУБД, когда куча параллельных транзакций.
Re[3]: Как правильно реализовать алгоритм?
От: GarryIV  
Дата: 13.07.07 12:20
Оценка:
Здравствуйте, kondrik, Вы писали:

K>а что такое (rwlock, try write lock, try read lock)? Знаю стандарнтые объекты блокировки, а это с какой оперы?


Сказали же google reader-writer lock + ваш ЯП.
WBR, Igor Evgrafov
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.