C++의 쓰레드에 문제가 있습니다.세터와 스레드
두 개의 스레드가 실행 중입니다. 하나는 클라이언트를 실행하고 다른 하나는 리스너로 작동합니다. 리스너 스레드는 다음 않는 shutdown()
방법, 호출
shutdown_=true;
std::cout<<shutdown_<<std::endl;
shutdown_
이 같은 휘발성 설정되고, 리스너 스레드가 shutdown()
메소드를 호출하는 유일한 하나입니다, 그리고 그것은 단지 다른 스레드 동안 액세스 할 수 있습니다 wait()
모드 (Poco synchronizedObject wait()
)입니다.
어떤 이유인지 cout
은 인쇄를 "0"으로 유지하고 처음에는 (xcode를 사용하는 동안) 회선 shutdown_=true
이 아무 것도하지 않는다는 경고가 나타납니다. 이 경고는 컴파일 후 사라졌습니다.
뮤텍스 잠금을 사용하여 줄 앞뒤에 잠금 및 잠금 해제를 시도했지만 아무런 효과가 없었습니다. 내가 그것을 사용하는 완전히 대신 기능 shutDown()
을 제거 결국, 나는 공개 할 shutDown_
을 변경하고, 다음과 같이 수신기 스레드에서 직접 액세스 : 잘 작동
client_->shutdown_=true
합니다. 나는 그 문제가 무엇인지, 그리고 앞으로 그것을 피하는 방법을 모른다.
감사합니다.
경고 : 컴파일러 경고는별로 의미가 없습니다 ... 실수로 종료하지 않았는지 확인하십시오 _ == true; ? 더 많은 코드를 게시하는 것도 도움이 될 수 있습니다. 다른 메모에 –
, 정확히 어떻게 해결 된 것으로 표시합니까? – Matan
정답의 왼쪽에있는 체크 표시를 클릭하십시오. –