1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-02 13:00:26 +02:00

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.
This commit is contained in:
Thien-Thi Nguyen 2001-04-06 09:51:25 +00:00
parent b727d0bde1
commit c7a813af89

View file

@ -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 ;;;; 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 ;;;; it under the terms of the GNU General Public License as published by
;;;; the Free Software Foundation; either version 2, or (at your option) ;;;; the Free Software Foundation; either version 2, or (at your option)
;;;; any later version. ;;;; any later version.
;;;; ;;;;
;;;; This program is distributed in the hope that it will be useful, ;;;; This program is distributed in the hope that it will be useful,
;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;;; GNU General Public License for more details. ;;;; GNU General Public License for more details.
;;;; ;;;;
;;;; You should have received a copy of the GNU General Public License ;;;; You should have received a copy of the GNU General Public License
;;;; along with this software; see the file COPYING. If not, write to ;;;; along with this software; see the file COPYING. If not, write to
;;;; the Free Software Foundation, Inc., 59 Temple Place, Suite 330, ;;;; the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
@ -19,6 +19,7 @@
;;;; threads.scm -- User-level interface to Guile's thread system ;;;; threads.scm -- User-level interface to Guile's thread system
;;;; 4 March 1996, Anthony Green <green@cygnus.com> ;;;; 4 March 1996, Anthony Green <green@cygnus.com>
;;;; Modified 5 October 1996, MDJ <djurfeldt@nada.kth.se> ;;;; Modified 5 October 1996, MDJ <djurfeldt@nada.kth.se>
;;;; Modified 6 April 2001, ttn
;;;; ---------------------------------------------------------------- ;;;; ----------------------------------------------------------------
;;;; ;;;;
@ -27,51 +28,62 @@
; --- MACROS ------------------------------------------------------- (define (%thread-handler tag . args)
(define-public (%thread-handler tag . args)
(fluid-set! the-last-stack #f) (fluid-set! the-last-stack #f)
(unmask-signals) (unmask-signals)
(let ((n (length args)) (let ((n (length args))
(p (current-error-port))) (p (current-error-port)))
(display "In thread:" p) (display "In thread:" p)
(newline p) (newline p)
(if (>= n 3) (if (>= n 3)
(display-error #f (display-error #f
p p
(car args) (car args)
(cadr args) (cadr args)
(caddr args) (caddr args)
(if (= n 4) (if (= n 4)
(cadddr args) (cadddr args)
'())) '()))
(begin (begin
(display "uncaught throw to " p) (display "uncaught throw to " p)
(display tag p) (display tag p)
(display ": " p) (display ": " p)
(display args p) (display args p)
(newline p))))) (newline p)))))
(defmacro-public make-thread (fn . args) ; --- MACROS -------------------------------------------------------
(defmacro make-thread (proc . args)
`(call-with-new-thread `(call-with-new-thread
(lambda () (lambda ()
(,fn ,@args)) (,proc ,@args))
%thread-handler)) %thread-handler))
(defmacro-public begin-thread (first . thunk) (defmacro begin-thread (first . rest)
`(call-with-new-thread `(call-with-new-thread
(lambda () (lambda ()
(begin (begin
,first ,@thunk)) ,first ,@rest))
%thread-handler)) %thread-handler))
(defmacro-public with-mutex (m . thunk) (defmacro with-mutex (m . body)
`(dynamic-wind `(dynamic-wind
(lambda () (lock-mutex ,m)) (lambda () (lock-mutex ,m))
(lambda () (begin ,@thunk)) (lambda () (begin ,@body))
(lambda () (unlock-mutex ,m)))) (lambda () (unlock-mutex ,m))))
(defmacro-public monitor (first . thunk) (defmacro monitor (first . rest)
`(with-mutex ,(make-mutex) `(with-mutex ,(make-mutex)
(begin (begin
,first ,@thunk))) ,first ,@rest)))
;; export
(export %thread-handler)
(export-syntax make-thread
begin-thread
with-mutex
monitor)
;;; threads.scm ends here