From c7a813af8940173d1dbe0426c554aa6cf7af80c0 Mon Sep 17 00:00:00 2001 From: Thien-Thi Nguyen Date: Fri, 6 Apr 2001 09:51:25 +0000 Subject: [PATCH] Update copyright. Use `export' and `export-syntax' instead of `define-public' and `defmacro-public'. (make-thread): Rename first arg to `proc'; nfc. (begin-thread, monitor): Rename second arg to `rest'; nfc. (with-mutex): Rename second arg to `body'; nfc. --- ice-9/threads.scm | 82 +++++++++++++++++++++++++++-------------------- 1 file changed, 47 insertions(+), 35 deletions(-) diff --git a/ice-9/threads.scm b/ice-9/threads.scm index a2ca23449..b5d0cf9ce 100644 --- a/ice-9/threads.scm +++ b/ice-9/threads.scm @@ -1,15 +1,15 @@ -;;;; Copyright (C) 1996, 1998 Free Software Foundation, Inc. -;;;; +;;;; Copyright (C) 1996, 1998, 2001 Free Software Foundation, Inc. +;;;; ;;;; This program is free software; you can redistribute it and/or modify ;;;; it under the terms of the GNU General Public License as published by ;;;; the Free Software Foundation; either version 2, or (at your option) ;;;; any later version. -;;;; +;;;; ;;;; This program is distributed in the hope that it will be useful, ;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;;; GNU General Public License for more details. -;;;; +;;;; ;;;; You should have received a copy of the GNU General Public License ;;;; along with this software; see the file COPYING. If not, write to ;;;; the Free Software Foundation, Inc., 59 Temple Place, Suite 330, @@ -19,6 +19,7 @@ ;;;; threads.scm -- User-level interface to Guile's thread system ;;;; 4 March 1996, Anthony Green ;;;; Modified 5 October 1996, MDJ +;;;; Modified 6 April 2001, ttn ;;;; ---------------------------------------------------------------- ;;;; @@ -27,51 +28,62 @@ -; --- MACROS ------------------------------------------------------- - -(define-public (%thread-handler tag . args) +(define (%thread-handler tag . args) (fluid-set! the-last-stack #f) (unmask-signals) (let ((n (length args)) (p (current-error-port))) - (display "In thread:" p) - (newline p) - (if (>= n 3) - (display-error #f - p - (car args) - (cadr args) - (caddr args) - (if (= n 4) - (cadddr args) - '())) - (begin - (display "uncaught throw to " p) - (display tag p) - (display ": " p) - (display args p) - (newline p))))) + (display "In thread:" p) + (newline p) + (if (>= n 3) + (display-error #f + p + (car args) + (cadr args) + (caddr args) + (if (= n 4) + (cadddr args) + '())) + (begin + (display "uncaught throw to " p) + (display tag p) + (display ": " p) + (display args p) + (newline p))))) -(defmacro-public make-thread (fn . args) +; --- MACROS ------------------------------------------------------- + +(defmacro make-thread (proc . args) `(call-with-new-thread (lambda () - (,fn ,@args)) + (,proc ,@args)) %thread-handler)) -(defmacro-public begin-thread (first . thunk) +(defmacro begin-thread (first . rest) `(call-with-new-thread (lambda () (begin - ,first ,@thunk)) + ,first ,@rest)) %thread-handler)) -(defmacro-public with-mutex (m . thunk) +(defmacro with-mutex (m . body) `(dynamic-wind - (lambda () (lock-mutex ,m)) - (lambda () (begin ,@thunk)) - (lambda () (unlock-mutex ,m)))) + (lambda () (lock-mutex ,m)) + (lambda () (begin ,@body)) + (lambda () (unlock-mutex ,m)))) -(defmacro-public monitor (first . thunk) +(defmacro monitor (first . rest) `(with-mutex ,(make-mutex) - (begin - ,first ,@thunk))) + (begin + ,first ,@rest))) + +;; export + +(export %thread-handler) + +(export-syntax make-thread + begin-thread + with-mutex + monitor) + +;;; threads.scm ends here