Merge commit 'doublec/master'

release
Slava Pestov 2007-10-11 18:09:19 -04:00
commit f7d8e204e7
2 changed files with 4 additions and 2 deletions

0
cp_dir Normal file → Executable file
View File

View File

@ -286,13 +286,15 @@ TUPLE: promise fulfilled? value processes ;
: fulfill ( value promise -- ) : fulfill ( value promise -- )
#! Set the future of the promise to the given value. Threads #! Set the future of the promise to the given value. Threads
#! blocking on the promise will then be released. #! blocking on the promise will then be released.
dup promise-fulfilled? [ dup promise-fulfilled? [
2drop
] [
[ set-promise-value ] keep [ set-promise-value ] keep
[ t swap set-promise-fulfilled? ] keep [ t swap set-promise-fulfilled? ] keep
[ promise-processes ] keep [ promise-processes ] keep
0 <vector> swap set-promise-processes 0 <vector> swap set-promise-processes
[ schedule-thread ] each yield [ schedule-thread ] each yield
] unless ; ] if ;
<PRIVATE <PRIVATE
: (maybe-block-promise) ( promise -- promise ) : (maybe-block-promise) ( promise -- promise )