(in-package :cl-user)
(eval-when (:compile-toplevel :load-toplevel :execute)
- #+allegro (require :process)
+ #+allegro (require :smputil)
#+corman (require :threads))
(eval-when (:compile-toplevel :load-toplevel :execute)
;;; Resource contention: condition variables
(defun make-condition-variable (&key name)
- (declare (ignore name))
- (mp:make-gate nil))
+ (mp:make-condition-variable :name name))
(defun condition-wait (condition-variable lock)
- (release-lock lock)
- (mp:process-wait "wait for message" #'mp:gate-open-p condition-variable)
- (acquire-lock lock)
- (mp:close-gate condition-variable))
+ (mp:condition-variable-wait condition-variable lock))
(defun condition-notify (condition-variable)
- (mp:open-gate condition-variable))
+ (mp:condition-variable-signal condition-variable))
(defun thread-yield ()
(mp:process-allow-schedule))