ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
22 июля
1200095
Argon (15.04.2022 16:48, просмотров: 5145)
Есть спецы в написании потокобезопасного софта? Чет немного путаюсь, боюсь перебдеть. 

В общем, надо потокобезопасно взять из структуры и передать данные. Есть мутекс на данные этих структур.

Есть ли вообще смысл использовать мутекс при чтении и нужно ли вводить дополнительную переменную для хранения копии?

Т.е. что правильнее - это (без ухищрений):

uint16_t getSensorPollPeriod(void) {

		return nvDataFolder.sensorsPollPeriod;

	}


или это

uint16_t getSensorPollPeriod(void) {

moduleDataMutex.lock();

uint16_t value = nvDataFolder.sensorsPollPeriod;

moduleDataMutex.unlock();

return value;

}

Интуиция подсказывает, правильнее - второе. Но смущает необходимость введения доп. переменной-копии. Как можно иначе изобразить?