From c5fcf7179a83ef65c86c6a4a390029149e518649 Mon Sep 17 00:00:00 2001 From: Franciszek Malinka Date: Tue, 5 Oct 2021 21:49:54 +0200 Subject: Duzy commit ze smieciami --- Semestr 2/racket/l15/kacp.rkt | 59 ------------------------------------------- 1 file changed, 59 deletions(-) delete mode 100644 Semestr 2/racket/l15/kacp.rkt (limited to 'Semestr 2/racket/l15/kacp.rkt') diff --git a/Semestr 2/racket/l15/kacp.rkt b/Semestr 2/racket/l15/kacp.rkt deleted file mode 100644 index bd484f1..0000000 --- a/Semestr 2/racket/l15/kacp.rkt +++ /dev/null @@ -1,59 +0,0 @@ -#lang racket - -(define (run-concurrent . thunks) - (define threads (map thread thunks)) - (for-each thread-wait threads)) - -(define (random-sleep) - (sleep (/ (random) 100))) - -(define (with-random-sleep proc) - (lambda args - (random-sleep) - (apply proc args))) - -(define (make-serializer) - (define sem (make-semaphore 1)) - (lambda (proc) - (lambda args - (semaphore-wait sem) - (define ret (apply proc args)) - (semaphore-post sem) - ret))) - -(define (table) - (random-sleep) - (define forks (list (make-semaphore 1) - (make-semaphore 1) - (make-semaphore 1) - (make-semaphore 1) - (make-semaphore 1))) - (define (pick-fork i) - (random-sleep) - (semaphore-wait (list-ref forks i))) - (define (put-fork i) - (random-sleep) - (semaphore-post (list-ref forks i))) - (define (dispatch m) - (cond [(eq? m 'pick-fork) pick-fork] - [(eq? m 'put-fork) put-fork] - [else (error "Unknown request -- TABLE" - m)])) - dispatch) - -(define dtable (table)) - -(define (philosopher dining-table number) - (define my-turn (make-serializer)) - (define (eat) - (display "Zaczynam ") - (display number) - (newline) - ((dining-table 'pick-fork) number) - ((dining-table 'put-fork) number) - ((dining-table 'pick-fork) (modulo (+ number 1) 5)) - ((dining-table 'put-fork) (modulo (+ number 1) 5)) - (display "Koncze ") - (display number) - (newline)) - (my-turn eat)) \ No newline at end of file -- cgit v1.2.3