[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Chicken-users] set! atomic?
From: |
Bryan Vicknair |
Subject: |
[Chicken-users] set! atomic? |
Date: |
Tue, 4 Jun 2013 19:15:52 -0700 |
User-agent: |
Mutt/1.5.21 (2010-09-15) |
SRFI-18 states:
"Read and write operations on the store (such as reading and writing a
variable, an element of a vector or a string) are not required to be atomic.
It is an error for a thread to write a location in the store while some other
thread reads or writes that same location."
Is it possible to eval a variable that is in an inconsistent state? I
understand that if there are a series of set-car! on a list, then a reader may
see the list as it is in between any of the set-car! calls. But is it possible
that an update to a very large object will ever be interrupted by one thread
such that other threads will see a broken version?
(use srfi-1)
(define foo '(1 2 3))
(thread-start! (make-thread (lambda () (set! foo (iota 1e8)))))
(print foo)
In the above code, will the primordial thread ever print a list that
isn't exactly (1 2 3) or (iota 1e8)?
The context of my question is that for a small web app I have a hash table that
all threads read freely, but they coordinate writes with a mutex. Do I need to
also have a read lock?
Bryan Vicknair
- [Chicken-users] set! atomic?,
Bryan Vicknair <=