나는 이벤트의 그룹화 순서를 하나의 원자 적 트랜잭션으로 저주하고있다.산성 상태에서 일련의 이벤트를 원자 상태로 만들기
Map
이 산성 상태로 저장되어 있다고 가정하고 Data.Map.alter
을 구현한다고 생각해보십시오. 어쩌면 값을 취하여 하나를 반환하는 함수는 변경 로그에 저장할 수 없기 때문에 산성 이벤트 Alter
을 정의 할 수는 없습니다. 그러나 이전 값을 조회하기 위해 query st Lookup ...
을 호출 한 다음 새 값을 쓰려면 (또는 오래된 값을) update st Insert ...
을 호출하는 함수를 작성하면 경쟁 조건이 발생하고 그 사이에 발생한 업데이트 정보가 손상 될 수 있습니다.
https://github.com/acid-state/acid-state/pull/48에서 나는 수동 잠금을 수행하기 위해 여분의 MVar
을 사용했지만 더 나은 해결책이 있어야합니다.
아이디어가 있으십니까?