2011-06-13 5 views
0

전역 행렬 (유형 벡터 < 벡터 < 문자>>)이 있고 내가 말한 방식으로 쓸 수있는 여러 스레드가 필요합니다. 처음에는 경쟁 조건 (액세스 + 쓰기가 원자가 아닐 수도 있음)을 두려워하기 때문에 하나의 뮤텍스 만 사용하려고 생각했습니다. 그런 다음 뮤텍스 매트릭스를 사용했습니다. 나는 이것에 관해 아주 확신하지 않는다. 그것은 같은 문제로 보인다.스레드가 행렬의 다른 셀에 쓸 수있는 방법

제발 도와 주실 수 있습니까? 필요한 경우 세부 정보를 추가하겠습니다. 감사합니다

답변

1

하나 이상의 스레드가 액세스하는 개체를 보호하기 위해 뮤텍스가 필요합니다. 하나 이상의 스레드가 개체를 수정합니다.

전에 스레드가 액세스하는 경우 (예 : 스레드가 시작되기 전에) 둘 이상의 스레드가 동일한 셀에 액세스하는 경우에만 뮤텍스가 필요합니다. 스레드가 다른 셀에 액세스하는 경우 행렬의 크기를 조정하지 않으면 모든 것이 OK가됩니다.

하나의 스레드가 셀에 쓰고 다른 스레드가 같은 셀에서 읽으면 두 스레드는 해당 뮤텍스를 잠 가서 그 셀에 액세스해야합니다. 두 스레드가 동일한 셀에 쓰면 다시 두 스레드가 동일한 뮤텍스를 잠글 수 있습니다. 이것은 다른 셀에 사용되는 뮤텍스와 다른 뮤텍스 일 수도 있고 동일한 셀 일 수도 있습니다.

하나의 스레드가 다른 스레드가 매트릭스에 액세스하는 동안 하나의 스레드가 매트릭스 구조를 수정하면 관련된 모든 스레드가 동일한 뮤텍스를 잠글 수 있습니다. 이것은 개별 셀에 사용 된 뮤텍스와 다른 뮤텍스 일 수 있으며, 동일한 뮤텍스 일 수 있습니다.

+0

예, 행렬의 크기가 조정되지 않습니다. 고마워요, 효과가있었습니다. –

관련 문제