Я разрабатываю программу с сервером, который позволяет двум клиентам общаться. Есть один клиент, который выполняет команды, и другой, который заставляет другой клиент выполнять их.
Чтобы это работало, у меня есть два потока: один для контролируемого клиента, другой для контроллера-клиента.
Контролируемый клиент всегда остается подключенным, имеет вектор с задачами и выполняет эти задачи, если задача добавлена. Он имеет бесконечный цикл while, который останавливается при закрытии соединения.
Контроллер-клиент добавляет задачи в вектор.
Теперь, когда существует вектор, совместно используемый двумя потоками, может возникнуть условие гонки, но поскольку один поток добавляет только объекты, а другой только всплывает объекты, это необходимо? Я пытался создать блок-схему с этой проблемой, но, возможно, это не ясно. Я действительно не знаю, как создать блок-схему:
Я использую std::vector <CustomClass>
из C ++, чтобы понять это.
Заранее спасибо,
ief2
РЕДАКТИРОВАТЬ: Дополнительный вопрос: нужен ли для вызова vector.size()
мьютекс?