| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > [boost] читатели / писатель |
| Автор: cupper 1.3.2011, 14:37 | ||||||||
| Пытаюсь реализовать этот процесс. Имею, n-e количество поток выполняет функцию F1, с телом
один поток в произвольное время делает вот так (F2)
sharedBuffer это некий общий буфер в который кемто другим заносится данные в виде пары - сообщение для отправки - указатель на экземпляр класса который должен его отправить обыкновенная ситуация когда в буфере есть данные который должен оправить некий П1, но тут вдруг этот П1 получает дисконнект, и уме больше ненадо отправлять данные. Тогда ему нужно из буфера удалить все записи с указателем на себя. Тут как раз этим П1 вызывается функция F2, он во первых хочет получить полные права на свой мютес, что бы больше никто не смог отправлять данные по средством F1. После того как он получает управление, от отчищает буфер от записей с собой. Удаляет соединение (reset). Далее освобождает мютекс для читателей, которые в свою очередь (те кто уже успех захватить запись из буфера, но не успел отправить ее до дисконнекта) видят что соединение уже нету и захваченную запись нужно просто пропустить. Меня собстно интересует момент правильно ли я реализовал блокировку мютекса. То что сразу несколько читателей могут получить доступ заняв мютекс частично
и то что когда писатель захочет полностью занять мютекс
он будет вынужден дождаться пока все текущие читатели его отпустят. Но при этом блокирует его захват новыми читателями ? |