Я пытаюсь сделать С++ API (для Linux и Solaris) потокобезопасным, чтобы его функции можно было вызывать из разных потоков без нарушения внутренних структур данных. В моем текущем подходе я использую мьютексы pthread для защиты всех доступов к переменным-членам. Это означает, что простая функция getter теперь блокирует и разблокирует мьютекс, и я беспокоюсь об этом, особенно потому, что API в основном будет использоваться в однопоточных приложениях, где любая блокировка мьютекса кажется чистой накладной.
Итак, я хотел бы спросить:
- Есть ли у вас опыт работы с однопоточными приложениями, использующими блокировку по сравнению с теми, которые этого не делают?
- насколько дороги эти вызовы блокировки/разблокировки, по сравнению, например. простой "return this- > isActive" для переменной-члена bool?
- Вам известны лучшие способы защиты таких переменных доступов?