Advertisement
Guest User

Threadsafe slot access

a guest
Sep 30th, 2016
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 0.59 KB | None | 0 0
  1. (defclass my-object ()
  2.   ((lock :initform (bt:make-recursive-lock)
  3.          :accessor lock)
  4.    (slot :initarg :slot
  5.          ...)
  6.    (another-slot ...)
  7.    ...))
  8.  
  9. (defmethod set-slot ((obj my-objectt) (new-value string))
  10.   (bt:with-recursive-lock-held ((lock obj))
  11.     (setf ((slot-value obj 'slot)) new-value)))
  12.  
  13. (defmethod do-something ((obj my-objectt))
  14.   (bt:with-recursive-lock-held ((lock obj))
  15.     (do-something-with-obj
  16.       ...)))
  17.  
  18. (defmethod do-something-else ((obj my-objectt))
  19.   (bt:with-recursive-lock-held ((lock obj))
  20.     (do-something-else-with-obj
  21.       ...)))
  22.  
  23. ...
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement