Как разделить глобальный объект между потоками? - PullRequest
1 голос
/ 27 марта 2019

Я создал класс, который имеет много открытых функций, некоторые из которых записывают данные, а некоторые - только данные.

Требуется, чтобы я делал это в 3 потоках, у меня нет другого выбора.

Я знаю, если я получил доступ к общему ресурсу только для чтения, тогда мне не нужно защищать, ноЯ не знаю, отличается ли это, когда я использую функцию для чтения приватной переменной общего ресурса.

Например, я пытаюсь сделать ...

globalObject.readColour();

которая является функцией, которая читает цвет глобального объекта.

Означает ли это, что я должен защищать поток на этом этапе, или можно просто прочитать значение без каких-либо рисков?

Я работаю над mbed, который поддерживает c и c ++ 98.

1 Ответ

1 голос
/ 27 марта 2019

Этот вопрос похож на этот

Если все ваши потоки будут только читать переменную, то вам не нужен мьютекс (или подобный), но если какой-либо поток выполняет операцию записи, вы должны использовать мьютекс.

...