n 개의 개별 이벤트가 발생한 후 작업을 시작하고 싶다고합니다. 세마포어를 1 - n으로 초기화하고 down()하기 때문에 각 이벤트가 끝난 후 깨어납니다.리눅스 커널 세마포어를 음수로 초기화하는 것이 합법적입니까?
4
A
답변
5
나는 그렇게 생각하지 않는다.
(1) semephore.count는 unsigned int로 선언됩니다. 세마포어의 정의를 참조하십시오
struct semaphore {
spinlock_t lock;
unsigned int count;
struct list_head wait_list;
};
(2) 아래() 함수가 감소하기 전에 카운트 값을 확인합니다, 확인 계수가 음수가합니다.
하나의 메커니즘을 구현하지 않는 한 세마포어를 직접 사용하여 요구 사항을 충족시킬 수 없습니다.
+0
감사합니다. 나는 count가 atomic-t 인 구형 커널을보고 있었지만, 구형 커널에 대해서도 여전히 적절하다고 생각한다. – smoofra
1
숫자는 부호가 없으므로 음수로 설정했다고 생각하면 실제로 큰 양수입니다. 그래서 아니, 할 수 없습니다.
1
서명이 없으므로 좋지 않습니다. 또한 세마포어는 양수 일 때만 활성화되므로 세마포어를 음수로 초기화하여 많은 수의 데이터를 생성하면 세마포어가 제한하려는 항목에 대한 액세스를 허용하게됩니다.
관련 문제
- 1. 리눅스 커널 - 세마포어를 기다리는 kthread를 멈추는 방법?
- 2. 전역 변수의 소멸자에서 thread_local 변수를 초기화하는 것이 합법적입니까?
- 3. 리눅스 커널에 커스텀 세마포어를 추가하는 방법은?
- 4. Amazon을 크롤링하는 것이 합법적입니까?
- 5. WhatsAPI를 사용하는 것이 합법적입니까?
- 6. 리눅스 프로세스 커널 커널
- 7. 리눅스 커널
- 8. 리눅스 커널
- 9. 리눅스 커널,
- 10. 두 개의 스레드로 세마포어를 초기화하는 올바른 방법입니다.
- 11. C++ 키워드를 재정의하는 것이 합법적입니까?
- 12. jquery 참조를 저장하는 것이 합법적입니까?
- 13. 리눅스 커널 세마포어 동결 스레드
- 14. 리눅스 커널 sendpage 함수
- 15. 리눅스 커널 코딩 스타일
- 16. 리눅스 커널 개발
- 17. 리눅스 커널 : 커널 드라이버의 함수 주소를 얻으려면
- 18. 리눅스 커널 읽기 기능
- 19. setscheduler()는 리눅스 커널
- 20. 리눅스 커널 헤더
- 21. 리눅스 커널 뮤텍스
- 22. 리눅스 커널 스케쥴링
- 23. 리눅스 커널 udp 조회
- 24. 는 리눅스 커널 소스
- 25. 리눅스 커널 개발
- 26. 리눅스 커널 대기 대기
- 27. 리눅스 커널 셧다운 (임베디드)
- 28. 리눅스 커널 버전 불일치
- 29. 리눅스 : 커널 모듈 다시로드
- 30. 리눅스 커널 오류
사례에서 조건 변수를 사용해보십시오. – Deqing