의 동기화가 나는이 문제를C++ - 나는 방법 C를 입력하고 foo는 다시로드 시작하면 스레드
Foo * foo = new Foo();
void A(){
foo->a();
}
void B(){
foo->b();
}
void C(){
foo->reloadAll();
}
을 가지고, 나는 그러나 A 또는 B를 호출 할 해달라고, A 또는 B를 함께 호출 할 수 있습니다. 이 경우 스레드를 잠그고 싶지 않습니다.
어떻게 동기화합니까? C++ 14에서 제공하는 기능을 사용할 수 있습니다. 현재, 나는 원자 변수에 대해 활성 대기 (sleep with loo)를 사용하고 있지만 이상적이지는 않습니다.
EDIT : 스레드에서 A, B 또는 C를 호출하는 것은 GUI (다른 언어로 작성)로 실행되므로 C++ 응용 프로그램에는 실제 스레드가 없습니다.
C가 호출되었을 때 A 또는 B가 이미 실행 된 경우 어떻게해야합니까? – Jeka
@Jeka A 또는 B가 실행 중일 때까지 기다렸다가 C가 끝날 때까지 기다리십시오. –
'std :: shared_mutex'를 사용하고'A'와'B'에'lock_shared()'를 호출하는 것을 고려할 수 있습니다 – LWimsey