멀티 스레드를 수행하는 응용 프로그램을 개발 중입니다. 내 작업자 스레드 중 하나가 위젯에 이미지를 표시합니다. 다른 스레드가 사운드를 재생합니다. 단추 클릭 이벤트에서 스레드를 중지/일시 중단/일시 중지하려고합니다. 비디오 플레이어 재생/일시 정지 버튼을 클릭 할 때와 동일합니다. threading을 위해 pthread 라이브러리를 사용하는 Linux 플랫폼에서 C++로 응용 프로그램을 개발 중입니다.리눅스에서 c로 PThread를 잠 그거나 일시 중지하는 방법
누군가 스레드 일시 중지/일시 중지를 어떻게 달성하는지 말해 줄 수 있습니까?
다중 스레드 환경에서 전역 공유 변수에 액세스하는 것은 실제로 안전하지 않습니다. '! play'를 검사하기 전에 뮤텍스를 잠그고'play = 0;'을 설정할 때 mutex를 사용하십시오. 실제로 이것은 단일 핵심 시스템에서 문제가되지 않지만 올바른/미래 보장 코드를 작성하는 것이 항상 좋습니다. –
실제로 대부분의 멀티 코어 시스템에서는 문제가되지 않지만, 맞습니다. 최소한 두 가지 메모리 장벽이 필요합니다. 그것들이 없으면 그 일시 정지는 효력을 발생시키기 위해 임의로 오랜 시간이 걸릴 수 있습니다. 물론 뮤텍스를 잠그는 것도 괜찮습니다. 그렇게하기 위해이 대답을 편집 할 것입니다. :) – LnxPrgr3
@deft_code 답변이 업데이트되었습니다! 그래도 내 이전 코멘트를 참조하십시오. – LnxPrgr3