Exemple #1
0
void
sgen_workers_stop_all_workers (void)
{
	forced_stop = TRUE;

	sgen_thread_pool_wait_for_all_jobs ();
	sgen_thread_pool_idle_wait ();
	SGEN_ASSERT (0, workers_state == STATE_NOT_WORKING, "Can only signal enqueue work when in no work state");
}
Exemple #2
0
void
sgen_workers_join (void)
{
    int i;

    sgen_thread_pool_wait_for_all_jobs ();
    sgen_thread_pool_idle_wait ();
    SGEN_ASSERT (0, workers_state == STATE_NOT_WORKING, "Can only signal enqueue work when in no work state");

    /* At this point all the workers have stopped. */

    SGEN_ASSERT (0, sgen_section_gray_queue_is_empty (&workers_distribute_gray_queue), "Why is there still work left to do?");
    for (i = 0; i < workers_num; ++i)
        SGEN_ASSERT (0, sgen_gray_object_queue_is_empty (&workers_data [i].private_gray_queue), "Why is there still work left to do?");
}
Exemple #3
0
void
sgen_workers_wait (void)
{
    sgen_thread_pool_idle_wait ();
    SGEN_ASSERT (0, sgen_workers_all_done (), "Why are the workers not done after we wait for them?");
}