future GC lock repair
svn: r16921
This commit is contained in:
parent
1991cde5a7
commit
c8b2ba9d3f
|
@ -866,13 +866,13 @@ void future_do_runtimecall(void *func,
|
||||||
|
|
||||||
//Wait for the signal that the RT call is finished
|
//Wait for the signal that the RT call is finished
|
||||||
future->can_continue_cv = &worker_can_continue_cv;
|
future->can_continue_cv = &worker_can_continue_cv;
|
||||||
end_gc_not_ok(future);
|
|
||||||
while (future->can_continue_cv) {
|
while (future->can_continue_cv) {
|
||||||
|
end_gc_not_ok(future);
|
||||||
pthread_cond_wait(&worker_can_continue_cv, &g_future_queue_mutex);
|
pthread_cond_wait(&worker_can_continue_cv, &g_future_queue_mutex);
|
||||||
|
start_gc_not_ok();
|
||||||
//Fetch the future instance again, in case the GC has moved the pointer
|
//Fetch the future instance again, in case the GC has moved the pointer
|
||||||
future = current_ft;
|
future = current_ft;
|
||||||
}
|
}
|
||||||
start_gc_not_ok();
|
|
||||||
|
|
||||||
pthread_mutex_unlock(&g_future_queue_mutex);
|
pthread_mutex_unlock(&g_future_queue_mutex);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user