Welcome to the CHICKEN Scheme pasting service

Race condition disappears when compiled? added by jacius on Fri May 14 09:03:34 2021

;; This code has a race condition. When run in csi, it prints some
;; number less than 20000. But when compiled, it always prints 20000.
;;
;; What causes the race condition to disappear when compiled?

(cond-expand
 (chicken-4
  (use srfi-18))
 (else
  (import (srfi 18))))

(define iterations 10000)

(define x 0)

(define (make-counter)
  (lambda ()
    (do ((i 0 (add1 i)))
        ((= i iterations))
      (set! x (add1 x)))))

(define thread1 (thread-start! (make-counter)))
(define thread2 (thread-start! (make-counter)))

(thread-join! thread1)
(thread-join! thread2)

(print x)

Your annotation:

Enter a new annotation:

Your nick:
The title of your paste:
Your paste (mandatory) :
Given a list, which one-argument R5RS procedure returns the element at index 0?
Visually impaired? Let me spell it for you (wav file) download WAV