동기화처리에서 공유데이터 다중읽기 및 쓰기 처리방법?
글쓴이: magma01 / 작성시간: 토, 2003/12/20 - 1:50오전
스레드 공부하는 중에 안되는 부분이 있어서 질문을 드립니다.
4개의 스레드가 있는경우 1개는 쓰기를 수행하고 나머지는 읽기를 수행한다고 가정할때
이때 읽기중에는 데이터 변경이 없으므로
읽기 스레드끼리는 동시수행이 가능하고(락이 안걸리겠죠?--a)
쓰기가 일어날때만 락을 걸어서 읽기스레드들의 접근이 차단되게 하고 싶습니다.
이때의 공유 데이터는 링크드리스트를 사용하게 되는데...
처음에는 간단하게 생각해서 그냥 쓰기작업 영역에만 락을주면 되겠지 했는데
나중에 하다보니깐 링크드리스트라서 읽기 쓰레드가 어떤 데이터를 찾아가다가
쓰기 작업에의해 읽기 스레드가 중간에 작업을 중지하게되고
쓰기스레드가 쓰기작업을 수행하게 되면 동기화 문제가 발생할것 같다는 생각이 들었습니다.
이런 경우에는 어쩔수 없이 읽기에서도 락을 줘서 동기화를 꼭 시켜줘야 되는지
아니면 다른 방식으로 읽기에대한 동시접근이 가능한 방법이 있는지
알고 싶습니다.
고수님들의 조언 부탁드립니다.... (^^)(__)(^^);;;
Forums:
네. 읽기전에도 lock 해야 됩니다.링크 리스트는 물론이려니와
네. 읽기전에도 lock 해야 됩니다.
링크 리스트는 물론이려니와 그냥 단순한 데이터라도 읽기전에 lock 해야 됩니다.
단일 변수를 lock 하지 않고 안전하게 읽고 쓰려면 atomic read/write 를 쓰면 됩니다.
댓글 달기