2011-04-13 3 views
14

나는 다중 스레드로 만들려고하는 응용 프로그램을 가지고 있습니다. 각 스레드는 읽기 전용 데이터의 큰 덩어리에 액세스합니다.여러 스레드에서 동시에 읽기 전용 데이터에 액세스하는 것이 좋습니까?

여러 스레드가 동시에 데이터에 액세스하는 것은 괜찮습니까? 데이터가 읽기 전용이 아니면 경쟁 조건을 방지하기 위해 뮤텍스 또는 다른 형식의 동기화를 사용해야 할 것입니다. 하지만 괜찮 으면 동기화에 관계없이 데이터를 읽어 궁금하네요.

모든 스레드 동안 데이터가 수정되지 않습니다. 응용 프로그램은 Linux와 Windows에서 실행되며 차이가 나는 경우 C++로 작성됩니다.

+0

일반적인 답변이 이미 제시되어 있지만 경고를 추가하고 싶습니다. 자원이 데이터베이스 인 경우주의하십시오. 여기를 참조하십시오 : http://stackoverflow.com/questions/13912489/read-only-access-only-for-sqlite3-from-multiple-threads – Fabian

+0

아마도 중요한 문제는 성능이 읽기 전용 스레드에도 영향을 미치는지 여부입니다 안전한. 100 개의 스레드가 여러 개의 임의 색인에서 10000 개의 요소로 이루어진 벡터로부터 읽는다고 가정 해보십시오. –

답변

18

데이터를 읽는 모든 스레드의 수명 동안 데이터가 읽기 전용이면 예, 동기화없이 읽을 수 있습니다.

+1

나는 당신이 6 초에 나를 때릴 것 같아 – ThomasMcLeod

+0

@ 토마스 : 대답에 게시하려고했다 : P –

+1

ThomasMcLeod를 걱정하지 마라. 나는 너에게 upvote도 줄 것이다. ... – rhinoinrepose

11

데이터가 실제로 멀티 스레드 액세스 기간 동안 읽기 전용이면 동기화가 필요하지 않습니다.

3

네, 괜찮습니다.

아무런 문제가 없어야합니다.

3

읽기 스레드가 시작되기 전에 데이터가 고정되어 있으면 예, 정상입니다.

관련 문제