Вопрос по синхронизации доступа к элементам массива в MFC
Для каждого элемента придётся сделать критическую секцию. Думаю, что если элементы в массиве тривиальные (например, int/double то лучше не делать синхронизацию для каждого элемента.
Ну нет, элементы в массиве не тривиальные. Хотя, это уже не важно. Я понял, что для моей задачи лучше использовать очередь. Ну, и вопрос: можно писать с одного потока в начало std::deque, а с другого в конец? Не может ли здесь произойти наложения при использовании? Конечно, меня интересует это в Visual C++.
Ну если тебе нужна простая очередь, то она делается на основе списка за 5 минут. Если тебе нужна очередь с ожиданием, то это уже сложнее.
простая очередь ... на основе списка за 5 минутНа то чтобы написать std::queue<some_t, std::list<some_t> > уходит 5 минут?
Честно говоря, в первый раз слышу про std::queue.
2) Да, если один поток пишет с одной стороны очереди, а другой -- с другой, скорей всего будут траблы. Например, если ты хранишь разиер очереди и два потока пробуют его увеличить на единицу командой size++, то в результате size может увеличится на 2, а может и на 1. Конкретное проблемное место зависит от реализации.
Ну добавь туда синхронизацию, скажешь, у тебя на это уйдёт меньше пяти минут?
Оставить комментарий
Olenenok
Как сделать используя средства MFC? Или вообще нельзя, можно только для массива в целом?