2017-12-16 23 views
0

다중 스레드 응용 프로그램 중 하나에 세마포어 수를 계산해야하는지 결정해야합니다. 우리가 동기화 포인트를 알고 있다면 사용할 세마포어의 수를 결정할 수 있다는 것을 알게되었습니다. 동기화 지점이란 무엇입니까?멀티 스레딩에서 "동기화 지점"이란 무엇입니까?

+0

질문 품질을 향상 시키려면 https://stackoverflow.com/help/how-to-ask를 확인하십시오. –

+0

이 경우 동기화 지점은 모든 스레드가 세마포를 기다리는 지점입니다. 동기화 포인트의 수를 알면 쓰레드 간의 "핸드 셰이크 (handshake)"시퀀스를 기반으로 하나의 세마포어가 여러 동기화 포인트에서 사용될 수 있기 때문에 사용할 세마포어의 수를 결정하는 데 도움이되지 않을 수도 있습니다. 일반적으로 스레드 당 적어도 하나의 세마포가 있습니다. 스레드에 의해 공유되는 객체로 작업 할 때 뮤텍스 (mutex)와 조건 변수 (condition variable) 같은 것이 필요할 수도 있습니다.하지만 약간의 문제는 있지만 리눅스는 Windows WaitForMultipleObjects()와 같은 것을 지원하지 않습니다. – rcgldr

답변

0

동기화 지점은 스레드가 다른 사용중인 스레드를 기다려야하는 실행 흐름의 한 지점으로, 작업중인 데이터가 계속 진행될 수 있도록 적절한 상태에 있습니다.

예를 들어, 프로세스가 버퍼의 빈 슬롯을 사용해야 할 수도 있고 다른 스레드가 버퍼를 비우는 중일 수도 있습니다.