aboutsummaryrefslogtreecommitdiff
path: root/amforth-6.5/common/lib/multitask-semaphore.frt
blob: 3b9cca4afe0a7e5a771125a0377de0c635153965 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
\ Semaphores (Source: B. Rodriguez)
\ cvariable sem1
\ : read sem1 wait do-something sem1 signal ;
\ do-something has the ressource controlled by sem1 exlusivly
\ wait can be used to communicate with interrupt service routines too
\
: wait ( addr - ) 
   begin pause dup c@ until \ wait for non-zero = available
   0 swap c!
;

: signal ( addr -- )
   1 swap c!        \ non-zero means available
;