diff --git a/library/io/unix/io.factor b/library/io/unix/io.factor index 599f967ca5..709afeac8a 100644 --- a/library/io/unix/io.factor +++ b/library/io/unix/io.factor @@ -305,4 +305,5 @@ USE: io H{ } clone write-tasks set FD_SETSIZE write-fdset set 0 1 stdio set + [ idle-thread ] in-thread ] bind ; diff --git a/library/threads.factor b/library/threads.factor index f30b378616..f1225befe7 100644 --- a/library/threads.factor +++ b/library/threads.factor @@ -19,22 +19,6 @@ namespaces queues sequences vectors ; : sleep-time ( sorted-queue -- ms ) dup empty? [ drop 1000 ] [ peek first millis [-] ] if ; -! DEFER: next-thread -! -! : do-sleep ( -- continuation ) -! sleep-queue* dup sleep-time dup zero? -! [ drop pop second ] [ nip io-multiplex next-thread ] if ; -! -! : next-thread ( -- continuation ) -! run-queue dup queue-empty? [ drop do-sleep ] [ deque ] if ; -! -! : stop ( -- ) next-thread continue ; -! -! : init-threads ( -- ) -! global [ -! \ run-queue set -! V{ } clone \ sleep-queue set -! ] bind ; : stop ( -- ) run-queue deque continue ; : yield ( -- ) [ schedule-thread stop ] callcc0 ; @@ -64,5 +48,4 @@ namespaces queues sequences vectors ; : init-threads ( -- ) \ run-queue set-global - V{ } clone \ sleep-queue set-global - [ idle-thread ] in-thread ; + V{ } clone \ sleep-queue set-global ;