libera/#clasp - IRC Chatlog
Search
14:33:53
drmeister
::notify Bike We don't have atomic operations on (gethash xxx yyy) yet - correct? I can't (mp:atomic-incf (gethash x y 0))
16:14:18
Colleen
Bike: drmeister said 1 hour, 40 minutes ago: We don't have atomic operations on (gethash xxx yyy) yet - correct? I can't (mp:atomic-incf (gethash x y 0))
16:15:30
Bike
i don't think having locks under the hood actually makes it susceptible to deadlocks or anything
16:18:02
drmeister
Let's get more stuff into the documentation. I've added an implementation-details section. I'm working on it.
16:18:03
drmeister
file:///Users/meister/Development/clasp-developers.github.io/implementation-details.html
16:18:42
drmeister
I've asked cracauer to add to the buildbot automatic update of the documentation.
16:20:02
Bike
well, things being atomically accessible or not is part of the interface, so it's not an implementation detail
16:20:18
Bike
for what it's worth, i don't think any other implementation allows gethash to be used atomically
16:22:13
Bike
don't think shinmera's lock free hash table (or no defun allowed's fork) actually has an incf
16:23:11
drmeister
Understood. I guess what I would do is put a cons cell as the value? I can atomically increment that - right?
16:26:20
Bike
the atomics interface is not remotely set in stone, so if you need anything that seems useful we can add it
16:49:27
drmeister
Understood. I don't want to special case things in weird ways. We have to think about this.
17:06:30
drmeister
::notify Bike - I just realized my workers can update everything they need to using mp:atomic-incf.
21:07:13
drmeister
Not quite - multithreaded code is tricky. I've got it working now - using as many cores as I can throw at it.
1:57:14
Colleen
Bike: drmeister said 8 hours, 50 minutes ago: - I just realized my workers can update everything they need to using mp:atomic-incf.
1:58:34
Bike
"Does (mp:atomic-incf (gethash x y 0)) make sense?" so part of the trick here is what "atomic" means. doing (with-lock (lock) (incf (gethash ...))) is atomic in the sense that if other code is using locks correctly, it will never see a partial state
1:59:06
Bike
in C++, as i understand (and it's very possible i don't, because this is an especially messy part of the standard), std::atomic doesn't actually have to be lock-free
1:59:24
Bike
and in actual implementations they fall back to locks when the machine can't actually do things atomically