Plaster
New
List
Login
common-lisp
default
anonymous
2020.08.16 19:04:00
(defmacro read-with-rw-lock ((lock) &body body) (let ((locked (gensym))) `(let ((,locked nil)) (unwind-protect (progn (begin-read ,lock) (setf ,locked t) (unwind-protect (if ,locked (locally ,@body)) (if ,locked (end-read ,lock)))))))) (defmacro write-with-rw-lock ((lock) &body body) (let ((locked (gensym))) `(let ((,locked nil)) (unwind-protect (progn (begin-write ,lock) (setf ,locked t) (unwind-protect (if ,locked (locally ,@body)) (if ,locked (end-write ,lock))))))))
Raw
Annotate
Repaste
Edit