나는 C++에서 리눅스 다중 스레드 응용 프로그램을 가지고 있습니다. class App
제공 변수 Status
에서이 응용 프로그램에서 :pthreads 응용 프로그램에서 할당
class App {
...
typedef enum { asStop=0, asStart, asRestart, asWork, asClose } TAppStatus;
TAppStatus Status;
...
}
모든 스레드가 종종 GetStatus()
함수를 호출하여 Status
을 확인하고 있습니다. 응용 프로그램의
inline TAppStatus App::GetStatus(){ return Status };
다른 기능 SetStatus()
함수를 호출하여 Status
변수에 다른 값을 지정할 수 있으며, 뮤텍스를 사용하지 마십시오.
void App::SetStatus(TAppStatus aStatus){ Status=aStatus };
편집 : 모든 스레드 switch
연산자 Status
를 사용
switch (App::GetStatus()){ case asStop: ... case asStart: ... };
- 이 경우 할당, 원자 조작인가?
- 올바른 코드입니까?
감사합니다.
저는 열거 형이 스레드 세이프 (threadesafe)한지 의심 스럽습니다 ... 할당이 원자 적 연산이라는 것을 의심합니다. –