Hi,

you are looking for make-fsempahore[1] and related:

===
#lang racket

(define sema (make-fsemaphore 1))

(define (make-th i)

(λ ()
  (let loop ((a 0))
(when (zero? (modulo a #e1e6))
    (fsemaphore-wait sema)
    "do what you have to do without disturbing other futures"
    (fsemaphore-post sema))
   (loop (add1 a)))))
(for ((i (in-range (processor-count)))) (future (make-th i)))
(sleep 10)
(exit)
===

The above updated source spins all your cores just fine.


Cheers,
Dominik
[1] https://docs.racket-lang.org/reference/futures.html#%28part._.Future_.Semaphores%29


On 12. 11. 21 18:44, Jacob Jozef wrote:
#lang racket

(define sema (make-semaphore 1))

(define (make-th i)

(λ ()

   (let loop ((a 0))

#;(when (zero? (modulo a #e1e6))

     (semaphore-wait sema)

     "do what you have to do without disturbing other futures"

     (semaphore-post sema))

    (loop (add1 a)))))

(for ((i (in-range (processor-count)))) (future (make-th i)))

(sleep 10)

(exit)


--
You received this message because you are subscribed to the Google Groups "Racket 
Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/cc8c5754-9354-6367-7c62-b8c12cb60cd4%40trustica.cz.

Reply via email to