У меня есть несколько потоков, любой из этих потоков может писать строку, к которой обращается какой-либо другой поток.Чтение общего ресурса эффективно
Я не могу писать и читать в одно и то же время, но я не вижу причин, по которым я не могу дважды прочитать один и тот же ресурс из двух разных потоков.
Как разрешить асинхронное чтение строки, не позволяя асинхронной записи и чтения одновременно, на C++?
Я бы предположил, что я каким-то образом дожидаюсь права собственности на Mutex и каким-то образом позволяю другим операциям чтения знать, что собственный поток выполняет операцию чтения и не пишет операцию, поэтому он также может читать, но я могу «На самом деле я поставил простой флаг, говорящий« Я читаю »где-то, потому что, как только второе чтение игнорирует Mutex из-за флага, первая операция чтения завершится, и операция записи может произойти, пока выполняется вторая операция чтения ,
Я не уверен, что делать.
Мое предположение, что вы хотите получить атомные обновления. Один из способов добиться этого - обеспечить потоки доступа к данным через указатель и иметь обновления, чтобы указатель указывал на другое местоположение. Таким образом, читатели никогда не увидели бы фрагмент данных в несогласованном состоянии (т. Е. Наполовину обновили). – didierc