마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

멀티스레드 서버의 임계영역 질문입니다

0 추천
pc서버(윈도우)를 돌릴 계획입니다

트래픽이 많지않고, 주고받는 패킷 사이즈도 상당히 적을것으로 예상되는데요.

대략적인 동작은 . 클라이언트가 자료를 요청하면 서버컴퓨터에 파일 약 10만개정도를 참조하여 응답을 해줍니다

이때 서버가 멀티스레드로 동작하게되는데, 트래픽이 좀 늘어나면, 여러스레드가 같은 파일에 엑세스하게 되면 에러가나는데.

뮤텍스키를 이용하여 임계영역을 두고 영역안에서 파일을 액세스하려고 합니다.

문제는 파일이 10만개인데, 이럴경우 뮤텍스키를 10만개 생성해야되는건가요? ;;;

스레드a가 1번파일을 쓰는동안 , 스레드b는 나머지 2.3.4,,,,,, 10만번 파일에 접근할수 있어야하는데, 각 파일마다 뮤텍스키를 설정해야 구현이 가능할까요...?
익명사용자 님이 2014년 8월 18일 질문

1개의 답변

0 추천
저같으면 읽기는 무시하고, 객체 값이 변경될때만 그 객체에 락을 걸것 같아요.

10만개를 전부 쓴다면 그건 좀 문제가 있는거 아닐까요..?
Gioskhan (12,060 포인트) 님이 2014년 8월 18일 답변
여러 스레드가 한파일을 read하는건 문제가없는데
한스레드가 write중인걸, 다른스레드에서 read하는건 문제가됩니다.
그렇기때문에 write는 반드시 락이필요하고, read의경우에도 락을 check하는 과정이 필요한데.
이런식이라면 lock이 파일마다 하나씩이  필요한게되는데.
이런 구현이 가능한건가 해서 질문을 올린겁니다...

파일 10만개가 처음부터 있는것이아니라.
클라이언트가 서버에 접속할때마다 하나씩 생성되고, 최종적으로 수만개~10만개까지 생각하고있는데.
이럴경우 뮤텍스 객체를 동적으로 생성해야된느데 이것도 가능한지 모르겠네요.
...