aboutsummaryrefslogtreecommitdiff
path: root/stdlib/source/documentation/lux/control/concurrency/semaphore.lux
blob: 91397cb83b3ee6020d29b319401be9a4a5c3019d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
(.require
 [library
  [lux (.except if loop)
   ["$" documentation]
   [data
    [text (.only \n)
     ["%" \\format (.only format)]]]
   [macro
    ["[0]" template]]]]
 [\\library
  ["[0]" /]])

(.def .public documentation
  (.List $.Module)
  ($.module /._
            ""
            [($.default /.semaphore_is_maxed_out)
             ($.default /.barrier)

             ($.documentation /.Semaphore
               "A tool for controlling access to resources by multiple concurrent processes.")

             ($.documentation /.semaphore
               ""
               [(semaphore initial_open_positions)])

             ($.documentation /.wait!
               (format "Wait on a semaphore until there are open positions."
                       \n "After finishing your work, you must 'signal' to the semaphore that you're done.")
               [(wait! semaphore)])

             ($.documentation /.signal!
               "Signal to a semaphore that you're done with your work, and that there is a new open position."
               [(signal! semaphore)])

             ($.documentation /.Mutex
               "A mutual-exclusion lock that can only be acquired by one process at a time.")

             ($.documentation /.mutex
               "Creates a brand-new mutex."
               [(mutex _)])

             ($.documentation /.synchronize!
               "Runs the procedure with exclusive control of the mutex."
               [(synchronize! mutex procedure)])

             ($.documentation /.limit
               "Produce a limit for a barrier.")

             ($.documentation /.Limit
               "A limit for barriers.")

             ($.documentation /.Barrier
               "A barrier that blocks all processes from proceeding until a given number of processes are parked at the barrier.")

             ($.documentation /.block!
               "Wait on a barrier until all processes have arrived and met the barrier's limit.")]
            []))