Re[7]: сериализация std::queue
От: NKZ  
Дата: 20.07.07 11:33
Оценка:
Здравствуйте, k732, Вы писали:

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

K>Но в процессе этих действий читатель запрашивает данные для обработки. Тут синхронизация в самом методе сериализации (archive). Если я не буду подчищать очередь в просессе сериализации, то потом мне все равно нужно ее почистить т.к. она имеет ограничение по размеру, а отправленные данные мне больше не нужны. Если же я буду чистить очередь сразу, то отойду от принятой бустовской сигнатуры.

K>Разниза лишь в том, что в первом случае мне придется выполнять копирование, а после очистку, что может быть накладно, т.к. ограничена 50000 объектов, а во втором случа придется только очищать ее в процессе, что избавляет от копирования.


K>Это операция критична ко времени, поэтому тут делема.... Как лучше поступить ?


Я не совсем понял, очередь сериализуется и сериализованные данные отдаются читателям и очередь очишается?

В любом случае, надо исходить из эффективности и требований к реализации, так что сигнатуры методов в бусте не являются истинной в последней инстанции . Еще как менее эффективный вариант, можно очищать очередь в синхронизированном блоке кода, сразу после сериализации.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.