2011-02-25 5 views

답변

1

예, sem_t는 1보다 큰 값을 취할 수 있습니다. sem_init을 사용하면 세마포어를 다른 값으로 초기화 할 수 있습니다. this link 인용 :

가 세마포어를 초기화 sem_init()를 사용하려면

int sem_init(sem_t *sem, int pshared, unsigned int value); 
  • pshared가이 플래그 이 있는지 여부를 나타내는 것이다
  • 초기화하는 세마포어 객체
  • SEM 포인트
      세마포어는 fork() 프로세스와 공유해야합니다. 내가 어떤 잘 모르는 것 같아요

      sem_init(&sem_name, 0, 10); 
      
  • : 리눅스 쓰레드는 현재

  • 값이
  • 예 의 사용에 세마포어를 설정하는 초기 값 입니다 세마포어을 공유 지원하지 않습니다 sem_t를 임의의 값만큼 증가시킬 수있는 함수.

    +1

    이 질문도 가능한 복제본을 참조하십시오. http://shackoverflow.com/questions/3491762/incrementing-the-value-of-posix-semaphores-by-more-than-1 – razlebe

    +2

    pshared가 세마포를 공유하지 못하게합니다. 갈래 낀 아이들과. 세마포어가 이미 공유 된 메모리에 생성 된 경우에만 유용하며,이 경우 pshared 세마포는 자식뿐만 아니라 공유 메모리를 매핑 할 수있는 다른 프로세스와 공유 될 수 있습니다. –

    관련 문제