www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

pmapp.rkt (764B)


      1 #lang racket
      2 
      3 (require racket/place)
      4 (require racket/runtime-path)
      5 
      6 (define-runtime-path  worker "pmapp_worker.rkt")
      7 ;(define pa (build-path (current-directory) "pmapp_worker.rkt"))
      8 
      9 (provide pmapp)
     10 
     11 (define (transpose lists) ; collumns to rows!
     12   (apply map list lists))
     13 
     14 (define (pmapp func . args) ;start places, give work, collect results, stop places.
     15   
     16   (define jlist (transpose args))
     17   (display jlist)
     18 
     19   (let* ([pls (for/list ([i (in-range (length jlist))])
     20                 (dynamic-place worker 'pmapp-worker ))]
     21          [wpls (for/list ([j pls][w jlist])
     22                  (place-channel-put j (append (list func) w)))]         
     23          [rlist (for/list ([v pls]) (place-channel-get v))]
     24          [stop (map place-wait pls)])
     25      rlist
     26      ))
     27 
     28 
     29 
     30 
     31