내가 아는건 정확히는 소프트웨어로 구현했다고 해서 소프트웨어 트랜잭셔널 메모리(STM). 이게 디비 트랜잭션이랑 비슷하다는 얘기가 보통 MVCC 를 쓰기 때문이야.


예를 들어 여러 쓰레드가 변수 A, B 를 사용한다고 치자. 트랜잭션 시작 하면 해당 쓰레드에서 사용하는 변수만 로컬처럼 만들어서 지지고 볶는 거야

만일 쓰기 동작이 없었다면 그냥 끝남

쓰기가 있었다면 쓰기 바로 직전에 변경된 글로벌이 있나 보고 있었다면 트랜잭션 자동 다시 시작. 이짓거리를 보통 미리 주어진 횟수만큼 해서 거의 모든 경우 트랜잭션을 성공시킨다... 이런 거임


이게 왜 대세냐? 과거 유저가 록킹하고 지지고 복고 실패시 어떻게 해고 이런 골아픈 것을 신경 안써도 되거든


클러져가 이걸 지원함. 알고리즘마다 조금씩 장단점이 있는데, 클로져 알고리즘은 쓰기가 편중될 수 있다는 점. 즉, 자주 쓰기를 하는 쓰레드가 거의 항상 이긴다. 그래서 I/O에는 불리하거나 중간에 가짜로 쓰기를 한번씩 해줘야 됨(이렇게 해서 다른 쓰레드가 쓰기를 실패하게 하는 거임)





근데 코세 너는 건강을 생각해서 야밤 갤질은 좀 자제해라.