2013-03-14 3 views
0

저는 pthread 라이브러리를 사용하여 C로 된 작은 소프트웨어를 작성하고 있습니다. 동적으로 허용되는 char 배열 을 포함하는 공유 구조체에 쓰기 액세스가 필요한 많은 스레드가 있지만 두 개의 다른 스레드가이 배열의 같은 요소에 액세스하지 못하도록 보장 할 수 있습니다. 내 질문은 : 나는 세마포어 또는 뮤텍스와 같은 것을 사용해야합니까, 아니면 필요하지 않은가요?스레드간에 공유 구조에 대한 액세스 제어를 사용해야합니까?

+1

Q : 불필요한 경우 [잠금 장치]를 사용해야합니까? A : 아니, 물론 아닙니다. :) Q : 2 개의 다른 thread가이 배열의 같은 요소에 결코 액세스 할 수없는 것을 보증 할 수있는 경우, 락이 필요합니까? A : 동일한 "엔티티"(예 : 배열 요소 또는 포인터)가 둘 이상의 스레드에 의해 동시에 업데이트되지 않는다고 보장 할 수 있다면, 아니요. – paulsm4

답변

0

스레드가 정보 읽기만하는 경우 잠금이 필요하지 않습니다.

스레드가 다른 스레드에서 볼 수없는 정보를 수정하는 경우 잠금이 필요하지 않습니다.

한 스레드에서 수정할 수 있고 다른 스레드에서 사용할 수있는 단일 위치가있는 경우 뮤텍스를 사용해야합니다.

0

데이터가 스레드간에 공유되지 않으며 데이터가 스레드간에 공유되지 않으므로 동기화 메커니즘이 필요하지 않습니다.

0

글쎄, 너 스스로 질문에 대답했다고 생각해!

뮤텍스의 목적은 일부 리소스에서 다른 스레드의 동시 액세스를 방지하는 것입니다. 의도적으로 쓰레드가 동일한 메모리 영역에 동시에 액세스 (읽기 또는 쓰기)하지 않는다고 보장 할 수 있다면 mutex 보호가 필요하지 않습니다.

관련 문제