>  기사  >  운영 및 유지보수  >  Linux의 다양한 세마포어 유형에 대한 자세한 설명

Linux의 다양한 세마포어 유형에 대한 자세한 설명

PHP中文网
PHP中文网원래의
2017-06-21 13:58:513598검색

정의: 한 번에 하나의 프로세스(스레드)만 리소스를 소유하도록 보호합니다.

원리: 세마포어 값이 양수이면 유휴 상태임을 의미합니다.

카테고리: 커널 세마포와 사용자 세마포, 사용자 세마포는 POXIS 세마포와 SYSTEMV 세마포로 나뉘며, POXIS 세마포는 명명된 세마포와 명명되지 않은 세마포로 구분됩니다.

커널 세마포:

  • #in clude

  • void sema_init(struct semaphore *sem, int val);

  • void init_MUTEX(struct semaphore *sem); //초기값 1

  • void init_MUTEX_LOCKED(struct semaphore *sem); // 이니셜 값 0

  • void down(struct semaphore *sem); //잠자기 가능

  • int down_interruptible(struct semaphore *sem); //중단될 수 있음

  • int down_trylock(struct semaphore *sem); //m 비차단 oVoid Up(구조체 세마포 *SEM)

  • SystemV 세마포:

#Include & LT SYS/SEM.H & GT

  • INT SEMGET(Key_t Key, INT; NSEMS, int oflag);

  • int semop(int semid, struct sembuf *opsptr, size_t nops);

  • int semctl(int semid, int semum, int cmd,...);

  • POSIX 이름 없는 Semaphore

#include

  • sem_t sem;

  • int sem_init(sem_t *sem, int pshared, unsigned int val); //pshared가 0이면 공유됩니다. 스레드 간, pshared 1 상위-하위 프로세스 공유

  • int sem_wait(sem_t *sem); //Blocking

  • int sem_trywait(sem_t *sem) //Non-blocking

  • int sem_post(sem_t *sem);

  • int sem_destroy(sem_t *sem);

  • 프로세스 간에 공유되는 경우 sem은 공유 메모리 영역(mmap, shm_open, shmget)에 저장되어야 합니다. 상위 프로세스의 스택은 허용되지 않습니다

  • POSIX 명명된 semaphore

sem_t *sem_open(const char *name, int oflag, mode_t mode, int val);

  • int sem_wait(sem_t *sem) ;

  • int sem_trywait( sem_t* sem);

  • int sem_post(sem_t *sem);

  • int sem_close(sem_t *sem);

  • int sem_unlink(const char *이름);

  • 열린 각 위치는 닫고 연결을 해제해야 하지만 마지막으로 실행한 연결 해제만 적용됩니다

위 내용은 Linux의 다양한 세마포어 유형에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.