(defstruct (waitqueue (:constructor %make-waitqueue))
#!+sb-doc
"Waitqueue type."
- (name nil :type (or null simple-string))
+ (name nil :type (or null thread-name))
#!+(and sb-lutex sb-thread)
(lutex (make-lutex))
#!-sb-lutex
"Semaphore type. The fact that a SEMAPHORE is a STRUCTURE-OBJECT
should be considered an implementation detail, and may change in the
future."
- (name nil :type (or null simple-string))
- (%count 0 :type (integer 0))
+ (name nil :type (or null thread-name))
+ (%count 0 :type (integer 0))
(waitcount 0 :type sb!vm:word)
(mutex (make-mutex))
(queue (make-waitqueue)))
(in-package "SB!THREAD")
+(def!type thread-name ()
+ 'simple-string)
+
(def!struct (thread (:constructor %make-thread))
#!+sb-doc
"Thread type. Do not rely on threads being structs as it may change
in future versions."
- name
- %alive-p
- os-thread
- interruptions
- (interruptions-lock (make-mutex :name "thread interruptions lock"))
- result
- (result-lock (make-mutex :name "thread result lock")))
+ (name nil :type (or thread-name null))
+ (%alive-p nil :type boolean)
+ (os-thread nil :type (or integer null))
+ (interruptions nil :type list)
+ (result nil :type list)
+ (interruptions-lock
+ (make-mutex :name "thread interruptions lock")
+ :type mutex)
+ (result-lock
+ (make-mutex :name "thread result lock")
+ :type mutex))
(def!struct mutex
#!+sb-doc
"Mutex type."
- (name nil :type (or null simple-string))
+ (name nil :type (or null thread-name))
(%owner nil :type (or null thread))
#!+(and (not sb-lutex) sb-thread)
- (state 0 :type fixnum)
+ (state 0 :type fixnum)
#!+(and sb-lutex sb-thread)
(lutex (make-lutex)))
(def!struct spinlock
#!+sb-doc
"Spinlock type."
- (name nil :type (or null simple-string))
+ (name nil :type (or null thread-name))
(value nil))
(sb!xc:defmacro with-mutex ((mutex &key (value '*current-thread*) (wait-p t))
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"1.0.37.29"
+"1.0.37.30"