Я знаю, что многопоточное программирование должно быть трудным. Но кажется, что вещи ломаются странным образом. Например, у меня есть несколько потоков, которые меняют цвета и записывают в консоль (это журнал ошибок).
Было 2 проблемы:
- искаженный текст
- изменение цвета мешает / не вовремя
Когда я добавил блокировку мьютекса в раздел, который изменяет цвет консоли и записывает в консоль, это помогло с замятым текстом (не видел его с момента блокировки мьютекса), но цвет консоли все еще неправильный.
Так что мьютекса недостаточно! Теперь я думаю, что мне понадобится очередь и единственный поток, который ожидает в этой очереди и сбрасывает ее, когда в ней есть что-то. Итак, мой вопрос: как определить, достаточно ли блокировки мьютекса? Как только задействованы каналы / файлы / связь с другим процессом?