목적: 세마포를 사용하여 공유 리소스에 액세스하는 스레드 수를 제한할 수 있습니다.
의미: 세마포는 공통 리소스에 대한 액세스를 제어하는 개체를 참조합니다. 스레드는 리소스에 액세스하기 전에 세마포어로부터 권한을 얻어야 합니다. 리소스에 액세스한 후 스레드는 세마포어에 권한을 반환해야 합니다. 권한을 획득하면 세마포어에서 사용 가능한 총 권한 수가 1개 감소합니다. 권한이 해제되면 세마포어의 권한 수가 1개 증가합니다.
허용된 세마포어 하나만 시뮬레이션에 사용할 수 있습니다. 상호 배타적인 잠금.
예:잠금과 세마포어의 유사점과 차이점은 무엇인가요?
(여기서 잠금은 뮤텍스 잠금을 나타냅니다.)
차이:
scope
세마포어: 프로세스 간 또는 스레드 간
Mutex 잠금: 스레드
세마포어의 값이 >인 경우 다른 스레드가 작업을 수행할 수 있습니다. 그리고 성공적인 실행 후 value--; value=0이면 sem_wait 스레드는 sem_post가 해제된 후 value++가 해제될 때까지 스레드를 차단하고 다른 스레드는 값에 따라 실행될 수 있습니다.
Mutex 잠금: 하나의 객체만 잠기며(잠김), 다른 스레드는 잠긴 객체에 액세스할 수 없습니다.
하나는 동기화이고 다른 하나는 상호배제
세마포어: 멀티스레드와 멀티태스크의 동기화에 사용됩니다. 하나의 스레드가 작업을 완료하면 세마포어를 통해 다른 스레드에 알립니다. 스레드가 어떤 작업을 수행하고 있습니다.
Mutex 잠금: 다중 스레드 및 다중 작업 상호 배제에 사용됩니다. 스레드가 리소스를 점유한 후에는 다른 스레드가 해당 리소스에 액세스할 수 없습니다. 이 스레드가 잠금 해제된 경우에만 다른 스레드가 이를 사용할 수 있습니다.
관련 기사:
Java의 뮤텍스 세마포 및 멀티 스레드 대기 메커니즘의 예
PHP 세마포의 기본 사용 예에 대한 자세한 설명
위 내용은 java - 세마포어의 개념과 잠금과 세마포어의 유사점 및 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!