+(with-test (:name atomic-update
+ :skipped-on '(not :sb-thread))
+ (let ((x (cons :count 0))
+ (nthreads (ecase sb-vm:n-word-bits (32 100) (64 1000))))
+ (mapc #'sb-thread:join-thread
+ (loop repeat nthreads
+ collect (sb-thread:make-thread
+ (lambda ()
+ (loop repeat 1000
+ do (atomic-update (cdr x) #'1+)
+ (sleep 0.00001))))))
+ (assert (equal x `(:count ,@(* 1000 nthreads))))))
+