Probably stupid question about atomicity
I want to write something like this (this is not real code):
(defun silly ()
(let ((log '()))
(flet ((logger (it)
(system:atomic-push it log)))
(spawn-lots-of-threads :logger #'logger)
log)))
But if I read 19.13.1 (http://www.lispworks.com/documentation/lw70/LW/html/lw-146.htm#pgfId-902388) it looks as if I am not allowed to do that: I think I need to do something like this:
(defun less-silly ()
(let ((log (cons 'log '())))
(flet ((logger (it)
(system:atomic-push it (cdr log))))
(spawn-lots-of-threads :logger #'logger)
(cdr log))))
Is that right?
(basically what I'm trying to do is to write some code which does a bunch of array-bashing using several threads, while also constructing 'logs' of what has happened which then get printed for later plotting: I don't care about the ordering of the log entries, but I do care that they don't get lost).
--tim
_______________________________________________
Lisp Hug - the mailing list for LispWorks users
lisp-hug@lispworks.com
http://www.lispworks.com/support/lisp-hug.html