Re: Add rwlocks to libthread documentation.
[Thread Prev] | [Thread Next]
[Date Prev] | [Date Next]
- Subject: Re: Add rwlocks to libthread documentation.
- From: Ori Bernstein <ori@xxxxxxxxxxxxxx>
- Reply-to: myrddin-dev@xxxxxxxxxxxxxx
- Date: Tue, 28 Aug 2018 21:42:32 -0700
- To: myrddin-dev@xxxxxxxxxxxxxx
- Cc: iriri <iri@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Now that I'm actually back, I finally appied it -- thanks!
On Thu, 23 Aug 2018 11:51:01 -0700, iriri <iri@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> wrote:
>
> ---
> doc/libthread/index.txt | 62 +++++++++++++++++++++++++++++++++++++----
> 1 file changed, 56 insertions(+), 6 deletions(-)
>
> diff --git a/doc/libthread/index.txt b/doc/libthread/index.txt
> index 8846168..f9f4593 100644
> --- a/doc/libthread/index.txt
> +++ b/doc/libthread/index.txt
> @@ -31,6 +31,10 @@ Summary
> ...
> ;;
>
> + type rwlock = struct
> + ...
> + ;;
> +
> type waitgrp = struct
> ...
> ;;
> @@ -50,10 +54,10 @@ Summary
> const mtxunlock : (mtx : mutex# -> void)
>
> /* semaphores */
> - const mksem : (v : uint32 -> sem)
> - const semwait : (s : sem# -> void)
> + const mksem : (v : uint32 -> sem)
> + const semwait : (s : sem# -> void)
> const semtrywait : (s : sem# -> bool)
> - const sempost : (s : sem# -> void)
> + const sempost : (s : sem# -> void)
>
> /* condition variables */
> const mkcond : (mtx : mutex# -> cond)
> @@ -61,6 +65,15 @@ Summary
> const condsignal : (cond : cond# -> void)
> const condbroadcast : (cond : cond# -> void)
>
> + /* reader-writer locks */
> + const mkrwlock : (-> rwlock)
> + const rdlock : (rw : rwlock# -> void)
> + const wrlock : (rw : rwlock# -> void)
> + const tryrdlock : (rw : rwlock# -> bool)
> + const trywrlock : (rw : rwlock# -> bool)
> + const rdunlock : (rw : rwlock# -> void)
> + const wrunlock : (rw : rwlock# -> void)
> +
> /* wait groups */
> const mkwg : (v : uint32 -> waitgrp)
> const wgwait : (w : waitgrp# -> void)
> @@ -160,11 +173,11 @@ have not successfully locked.
> Semaphores
> ----------
>
> - const mksem : (v : uint32 -> sem)
> + const mksem : (v : uint32 -> sem)
>
> Creates a semaphore with the initial value `v`.
>
> - const semwait : (s : sem# -> void)
> + const semwait : (s : sem# -> void)
>
> Decrements a semaphore, blocking if its value is less than or equal to 0.
>
> @@ -174,7 +187,7 @@ Attempts to decrement a semaphore. If the value is zero, this function returns f
> and leaves the value of the semaphore unchanged, otherwise it decrements it
> and returns true.
>
> - const sempost : (s : sem# -> void)
> + const sempost : (s : sem# -> void)
>
> Increments a semaphore, waking at least one waiter, if any exist.
>
> @@ -200,6 +213,43 @@ Wakes one waiter on the condition variable, allowing them to take the mutex.
>
> Wakes all waiters on the condition variable.
>
> +Reader-Writer Locks
> +-------------------
> +
> + const mkrwlock : (-> rwlock)
> +
> +Creates a new reader-writer lock in the unlocked state.
> +
> + const rdlock : (rw : rwlock# -> void)
> +
> +Acquires the rwlock as a reader. Any number of readers may concurrently hold
> +the lock but no writer may acquire the lock while it is held by a reader.
> +
> + const wrlock : (rw : rwlock# -> void)
> +
> +Acquires the rwlock as a writer. Only one writer may concurrently hold the lock
> +and no reader may acquire the lock while it is held by a writer.
> +
> + const tryrdlock : (rw : rwlock# -> bool)
> +
> +Attempts to acquire the rwlock as a reader and returns true if successful or
> +false if unsuccessful.
> +
> + const trywrlock : (rw : rwlock# -> bool)
> +
> +Attempts to acquire the rwlock as a writer and returns true if successful or
> +false if unsuccessful.
> +
> + const rdunlock : (rw : rwlock# -> void)
> +
> +Releases the rwlock as a reader. It is a bug to call this if you acquired the
> +lock as a writer or if you don't hold the lock at all.
> +
> + const wrunlock : (rw : rwlock# -> void)
> +
> +Releases the rwlock as a writer. It is a bug to call this if you acquired the
> +lock as a reader or if you don't hold the lock at all.
> +
> Wait Groups
> -----------
>
> --
> 2.18.0
>
>
--
Ori Bernstein
| Add rwlocks to libthread documentation. | iriri <iri@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx> |
- Prev by Date: Add rwlocks to libthread documentation.
- Previous by thread: Add rwlocks to libthread documentation.
- Index(es):