diff --git a/racket/src/thread/future.rkt b/racket/src/thread/future.rkt index cd3150104e..2e9c807972 100644 --- a/racket/src/thread/future.rkt +++ b/racket/src/thread/future.rkt @@ -10,7 +10,8 @@ "thread.rkt" "lock.rkt") -(provide futures-enabled? +(provide init-future-place! + futures-enabled? current-future future future? @@ -27,12 +28,17 @@ reset-future-logs-for-tracing! mark-future-trace-end!) +(define place-main-thread-id (make-pthread-parameter 0)) + +(define (init-future-place!) + (place-main-thread-id (get-pthread-id))) + ;; not sure of order here... (define (get-caller) (cond [(current-future) (current-future)] - [(not (= 0 (get-pthread-id))) + [(not (= (place-main-thread-id) (get-pthread-id))) (get-pthread-id)] [else (current-thread)])) diff --git a/racket/src/thread/schedule.rkt b/racket/src/thread/schedule.rkt index 413874c37c..67892e4294 100644 --- a/racket/src/thread/schedule.rkt +++ b/racket/src/thread/schedule.rkt @@ -38,6 +38,7 @@ (make-another-initial-thread-group) (set-root-custodian! c) (init-system-idle-evt!) + (init-future-place!) (call-in-main-thread thunk)) ;; ----------------------------------------