tur/rwlock
POSIX read-write lock (pthread_rwlock_t) wrapped as ptr<void>.
Since: Phase T19-C
rwlock-new
(rwlock-new :ptr<void>)
allocate and initialise a new POSIX read-write lock.
An opaque ptr<void> handle to a heap-allocated pthread_rwlock_t.
(let [rw (rwlock-new)] ...) ; => ptr<void>
Since: Phase T19-C
rwlock-rdlock
(rwlock-rdlock [rw :ptr<void>] :nil)
acquire a shared read lock, blocking until available.
| rw | rwlock handle returned by rwlock-new |
(rwlock-rdlock rw)
Since: Phase T19-C
rwlock-wrlock
(rwlock-wrlock [rw :ptr<void>] :nil)
acquire an exclusive write lock, blocking until available.
| rw | rwlock handle returned by rwlock-new |
(rwlock-wrlock rw)
Since: Phase T19-C
rwlock-try-rdlock
(rwlock-try-rdlock [rw :ptr<void>] :bool)
attempt to acquire a shared read lock without blocking.
| rw | rwlock handle returned by rwlock-new |
true if the read lock was acquired; false if a writer currently holds the lock.
(if (rwlock-try-rdlock rw) ...) ; => bool
Since: Phase T19-C
rwlock-try-wrlock
(rwlock-try-wrlock [rw :ptr<void>] :bool)
attempt to acquire an exclusive write lock without blocking.
| rw | rwlock handle returned by rwlock-new |
true if the write lock was acquired; false if the lock is currently held.
(if (rwlock-try-wrlock rw) ...) ; => bool
Since: Phase T19-C
rwlock-unlock
(rwlock-unlock [rw :ptr<void>] :nil)
release a previously acquired read or write lock.
| rw | rwlock handle returned by rwlock-new |
(rwlock-unlock rw)
Since: Phase T19-C
rwlock-free
(rwlock-free [rw :ptr<void>] :nil)
destroy the read-write lock and release its memory.
| rw | rwlock handle returned by rwlock-new |
(rwlock-free rw)
Since: Phase T19-C