У меня есть многопоточное приложение linux на C ++.В этом приложении в class App
предлагается переменная Status
:
class App {
...
typedef enum { asStop=0, asStart, asRestart, asWork, asClose } TAppStatus;
TAppStatus Status;
...
}
Все потоки часто проверяют Status
, вызывая функцию GetStatus()
.
inline TAppStatus App::GetStatus(){ return Status };
Другие функцииПриложение может назначать различные значения переменной Status
, вызывая функцию SetStatus()
и не использовать мьютексы.
void App::SetStatus( TAppStatus aStatus ){ Status=aStatus };
Редактировать: Все потоки используют оператор Status
в switch
:
switch ( App::GetStatus() ){ case asStop: ... case asStart: ... };
- Является ли присвоение в этом случае атомарной операцией?
- Это правильный код?
Спасибо.