저는 pthread 라이브러리를 사용하여 C로 된 작은 소프트웨어를 작성하고 있습니다. 동적으로 허용되는 char 배열 을 포함하는 공유 구조체에 쓰기 액세스가 필요한 많은 스레드가 있지만 두 개의 다른 스레드가이 배열의 같은 요소에 액세스하지 못하도록 보장 할 수 있습니다. 내 질문은 : 나는 세마포어 또는 뮤텍스와 같은 것을 사용해야합니까, 아니면 필요하지 않은가요?스레드간에 공유 구조에 대한 액세스 제어를 사용해야합니까?
0
A
답변
0
스레드가 정보 읽기만하는 경우 잠금이 필요하지 않습니다.
스레드가 다른 스레드에서 볼 수없는 정보를 수정하는 경우 잠금이 필요하지 않습니다.
한 스레드에서 수정할 수 있고 다른 스레드에서 사용할 수있는 단일 위치가있는 경우 뮤텍스를 사용해야합니다.
0
데이터가 스레드간에 공유되지 않으며 데이터가 스레드간에 공유되지 않으므로 동기화 메커니즘이 필요하지 않습니다.
0
글쎄, 너 스스로 질문에 대답했다고 생각해!
뮤텍스의 목적은 일부 리소스에서 다른 스레드의 동시 액세스를 방지하는 것입니다. 의도적으로 쓰레드가 동일한 메모리 영역에 동시에 액세스 (읽기 또는 쓰기)하지 않는다고 보장 할 수 있다면 mutex 보호가 필요하지 않습니다.
관련 문제
- 1. 스레드간에 제어를 전송하는 방법
- 2. 스레드간에 파이썬 공유 파일 액세스
- 3. 스레드간에 CUDA 공유 객체
- 4. 스레드간에 개체 공유
- 5. 자바 스레드간에 데이터 공유
- 6. Qt 스레드간에 데이터 공유
- 7. 파이썬 : 스레드간에 목록 공유
- 8. 파이썬 스레드간에 공유 변수 만들기
- 9. 두 스레드간에 QAxObject를 공유 하시겠습니까?
- 10. 녹에서 스레드간에 잠금없는 리소스 공유
- 11. C# 스레드간에 파일 핸들링 공유
- 12. C 전역 정적 - 스레드간에 공유?
- 13. 스레드간에 공유 리소스 재 설정
- 14. 데이터 구조에 대한 멀티 스레드 액세스
- 15. 스레드간에 HttpContext.Current.Items에 저장된 데이터에 액세스
- 16. 자바가 동시에 스레드간에 파일을 액세스
- 17. 공유 필터에서 항목 제어를 중지하십시오.
- 18. WireframeSketcher 소스 제어를 통해 공유
- 19. C# 및 WCF의 스레드간에 개체 공유
- 20. 스레드간에 공유 된 연결에 대한 JDBC 자동 커밋
- 21. 공유 메모리의 구조에 액세스 한 후 Segfault가 발생 했습니까?
- 22. 준비된 문이 스레드간에 공유 될 수 있습니까?
- 23. blockingqueues 질문을 사용하여 스레드간에 데이터 공유
- 24. xrange 내부 구조에 액세스
- 25. R에있는 구조에 액세스
- 26. 공유 사서함에 대한 javamail 액세스
- 27. Pthreads의 공유 데이터에 대한 액세스
- 28. 공유 파일보기 - 액세스 제어
- 29. Java 스레드간에 공유 버퍼를 구현하는 방법은 무엇입니까?
- 30. 일부 스레드간에 변수를 공유 할 수 있습니까?
Q : 불필요한 경우 [잠금 장치]를 사용해야합니까? A : 아니, 물론 아닙니다. :) Q : 2 개의 다른 thread가이 배열의 같은 요소에 결코 액세스 할 수없는 것을 보증 할 수있는 경우, 락이 필요합니까? A : 동일한 "엔티티"(예 : 배열 요소 또는 포인터)가 둘 이상의 스레드에 의해 동시에 업데이트되지 않는다고 보장 할 수 있다면, 아니요. – paulsm4