;;; -*- Mode: Scheme; scheme48-package: (config) -*- ;;;;;; Rendezvous Concurrency Abstraction ;;;;;; Scheme48 Package Definitions ;;; This code is written by Taylor Campbell and placed in the Public ;;; Domain. All warranties are disclaimed. (define-structures ((rendezvous rendezvous-interface) (rendezvous-builder rendezvous-builder-interface)) (open scheme receiving srfi-9 ; define-record-type srfi-23 ; error define-synchronized-record-types variant-types suspensions time ; for timing rendezvous (subset threads-internal (register-dozer!)) ) (optimize auto-integrate) (files rendezvous s48-time)) (define-structure rendezvous-channels rendezvous-channels-interface (open scheme define-synchronized-record-types queues rendezvous rendezvous-builder ) (optimize auto-integrate) (files channel)) (define-structure rendezvous-mailboxes rendezvous-mailboxes-interface (open scheme define-synchronized-record-types queues receiving rendezvous rendezvous-builder ) (optimize auto-integrate) (files mailbox)) (define-structure rendezvous-placeholders rendezvous-placeholders-interface (open scheme define-synchronized-record-types signals rendezvous rendezvous-builder ) (optimize auto-integrate) (files placeholder)) (define-structure rendezvous-semaphores rendezvous-semaphores-interface (open scheme srfi-9 ; define-record-type variant-types queues threads rendezvous rendezvous-mailboxes rendezvous-channels rendezvous-placeholders ) (optimize auto-integrate) (files semaphore)) ;;;; Scheme Compatibility Interface (define-structure suspensions suspensions-interface (open scheme receiving define-record-types cells queues threads threads-internal low-proposals ) (optimize auto-integrate) (files s48-suspend)) (define-structure define-synchronized-record-types (export (define-synchronized-record-type :syntax)) (open scheme (modify proposals (rename (define-synchronized-record-type %define-synch-record-type))) ) (begin (define-syntax define-synchronized-record-type (syntax-rules () ((DEFINE-SYNCHRONIZED-RECORD-TYPE name . more) (%DEFINE-SYNCH-RECORD-TYPE name name . more)))) )) (define-structure variant-types (export (define-variant-type :syntax)) (open scheme record-types records ;; not ENUMERATED -- see definition of DEFINE-ENUMERATION & ;; ENUM in the code enum-case code-quote destructuring signals util ) (for-syntax (open scheme destructuring names )) (files s48-variant-type))