Add FSemaphores to Typed Racket

This commit is contained in:
Asumu Takikawa 2015-02-02 11:23:09 -05:00
parent e85cc55f6f
commit 8402ee1635
5 changed files with 20 additions and 0 deletions

View File

@ -261,6 +261,7 @@ These are not part of the numeric tower.
@defidform[Place]
@defidform[Place-Channel]
@defidform[Semaphore]
@defidform[FSemaphore]
@defidform[Will-Executor]
@defidform[Pseudo-Random-Generator]
)]{

View File

@ -1436,6 +1436,14 @@
[would-be-future (-poly (A) ((-> A) . -> . (-future A)))]
[processor-count (-> -PosInt)]
;; Section 11.4.2 (Future Semaphores)
[make-fsemaphore (-> -Nat -FSemaphore)]
[fsemaphore? (make-pred-ty -FSemaphore)]
[fsemaphore-post (-> -FSemaphore -Void)]
[fsemaphore-wait (-> -FSemaphore -Void)]
[fsemaphore-try-wait? (-> -FSemaphore B)]
[fsemaphore-count (-> -FSemaphore -Nat)]
;; Section 11.5 (Places)
[place-enabled? (-> -Boolean)]
[place? (make-pred-ty -Place)]

View File

@ -149,6 +149,7 @@
[Thread-Group -Thread-Group]
[Impersonator-Property -Impersonator-Property]
[Semaphore -Semaphore]
[FSemaphore -FSemaphore]
[Bytes-Converter -Bytes-Converter]
[Pseudo-Random-Generator -Pseudo-Random-Generator]
[Logger -Logger]

View File

@ -32,6 +32,7 @@
(only-in racket/flonum flvector?)
(only-in racket/extflonum extflvector?)
(only-in racket/fixnum fxvector?)
(only-in racket/future fsemaphore?)
(only-in '#%place place? place-channel?))
(only-in racket/pretty pretty-print-style-table?)
(only-in racket/udp udp?)
@ -39,6 +40,7 @@
(only-in racket/flonum flvector?)
(only-in racket/extflonum extflvector?)
(only-in racket/fixnum fxvector?)
(only-in racket/future fsemaphore?)
(only-in '#%place place? place-channel?))
(provide (except-out (all-defined-out) make-Base)
@ -222,6 +224,7 @@
(define/decl -Impersonator-Property
(make-Base 'Impersonator-Property #'impersonator-property? impersonator-property?))
(define/decl -Semaphore (make-Base 'Semaphore #'semaphore? semaphore?))
(define/decl -FSemaphore (make-Base 'FSemaphore #'fsemaphore? fsemaphore?))
(define/decl -Bytes-Converter (make-Base 'Bytes-Converter #'bytes-converter? bytes-converter?))
(define/decl -Pseudo-Random-Generator
(make-Base 'Pseudo-Random-Generator #'pseudo-random-generator? pseudo-random-generator?))

View File

@ -1855,6 +1855,13 @@
'not-a-failure-thunk
"x")]
;; Future Semaphores
[tc-e (make-fsemaphore 5) -FSemaphore]
[tc-e (fsemaphore-count (make-fsemaphore 5)) -Nat]
[tc-e (let: ((s : FSemaphore (make-fsemaphore 3)))
(fsemaphore-post s))
-Void]
;Random Numbers
(tc-e (make-pseudo-random-generator) -Pseudo-Random-Generator)
(tc-e (let: ((pg : Pseudo-Random-Generator (make-pseudo-random-generator)))