Здравствуйте, k732, Вы писали:
K>Пусть семафор имеет 30 свободных состояний. K>В этот момент происходит сериализация. Очередь чистится.
K>1.Очистка очереди не может осуществляться методом pop, т.к. произойдет дедлок. Тоесть после очистки нужно еще сбросить семафор. K>2. На друго стороне произошла десериализация. Какое состояние имеет семафор ? кто его будет инициализировать ? K>Тоесть получается что его инициализация обязательно должна быть в методе сериализации
1.да надо сбрасывать при сериализации и устанавливать queue.size() при десериализации.
2.да так оно и есть, при сериализаций/десериализаций, дожидаемся когда потоки закончат работать с данными, лочим данные и загружаем/сохраням очередь и инициализируем семафор(при загрузке данных) .