fix futures for CGC, where lightweight continuations are disabled

This commit is contained in:
Matthew Flatt 2010-12-05 13:13:16 -07:00
parent 54e46f78bb
commit ff6172c44b

View File

@ -1214,16 +1214,16 @@ void scheme_check_future_work()
if (ft && ft->want_lw) { if (ft && ft->want_lw) {
void *storage[3]; void *storage[3];
(void)capture_future_continuation(ft, storage); if (capture_future_continuation(ft, storage)) {
/* Signal the waiting worker thread that it
/* Signal the waiting worker thread that it can continue doing other things: */
can continue doing other things: */ mzrt_mutex_lock(fs->future_mutex);
mzrt_mutex_lock(fs->future_mutex); if (ft->can_continue_sema) {
if (ft->can_continue_sema) { mzrt_sema_post(ft->can_continue_sema);
mzrt_sema_post(ft->can_continue_sema); ft->can_continue_sema = NULL;
ft->can_continue_sema = NULL; }
mzrt_mutex_unlock(fs->future_mutex);
} }
mzrt_mutex_unlock(fs->future_mutex);
} else } else
break; break;
} }