동기화 이슈

2009/03/17 23:48

하아 GPG에 가면 짜증이 나서 차분하게 글을 쓸 수가 없다. 왠지 다들 공격적인듯한 느낌이 들어서 가급적 글을 안쓸려고 하는데 또 글을 남겼다가 늪에 발이 빠졌다.

이번 떡밥은 이건데 착실히 답변을 달려고하다가, 짜증도 나고 귀찮기도해서 더이상 글을 쓰기 싫다. 사실 중간에 testors님이 제기한 문제는 그렇게 생각할 수도 있는 문제인데 그 뒤에 있는 글들, 그러니까 내가 공부 많이해서 잘아는데 그럴리없다는 투의 글들은 보면서 화가 난다. GPG도 완전히 끊어야겠다.

잔소리는 그만두고 제목인 동기화 이슈에 대해서 얘기하면 특별히 명령어를 주지 않더라도 memory barrier 역할을 하는 경우가 몇 가지 있다(내가 윈도우에 최적화된 프로그래머라서 다른 환경은 뭐가 있는지 당연히 모른다).
  • CriticalSection에 들락날락하는 함수들
  • Signal synchronization objects 함수들
  • Wait 함수
  • Interlocked 함수들
이 4가지가 memory barrier 역할을 한다고 내가 주장하는건 아니고, MS에서 그렇다고 하는거다. 증거가 필요하면 심심할때 Synchronization and Multiprocess issues를 읽어봐도 된다. MS도 믿을 수 없다면 그냥 그렇게 살아야지 뭐.

그리고 문제의 volatile. 이 예약어가 앞에 달리면 그 변수가 사용되는 모든 곳에 memory barrier가 강제로 삽입된다고 보면 된다. volatile을 쓰지말라고 하는건 위의 4가지가 memory barrier의 역할을 하니 섞어 쓸 필요는 없다는 말이다. 이미 깨끗하게 청소가되서 먼지 하나 없는데, 또 청소하는 삽질을 하지말라는거지 틀렸다는 말이 아니다. volatile 붙여서 프로그램 짜도 잘 돌아가니까 신경 끄고 살아도 상관은 없다. 나도 남들이 volatile을 쓰던말든 신경 끌란다.

수정:
위에서 언급한 volatile에 대한 수정해야할듯한데, 아직 어떻게 수정해야할지 확신이 서지 않는다. 밤에 공부를 좀 했는데, 하고나니 더 뿌옇게 변했다. 일단 줄 그어둠.
Posted by 조성경
◀ PREV : [1] : ... [15] : [16] : [17] : [18] : [19] : [20] : [21] : [22] : [23] : ... [95] : NEXT ▶

카테고리

분류 전체보기 (95)
Programming (33)
보고듣고읽고 (22)
긁적 (35)
Architecture (1)
서버 만들기 (1)

달력

«   2010/03   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31