From 98ca2597879be0ec9484c4a32dae1c10607c9c17 Mon Sep 17 00:00:00 2001 From: Brian Norris Date: Thu, 6 Sep 2012 13:55:05 -0700 Subject: [PATCH] libthreads: don't spin on THREAD_JOIN THREAD_JOIN can now be implemented properly here. We shouldn't have to spin, waiting for another thread to complete. This may help improve the ModelChecker architecture, since we will never have NULL actions passed to the ModelChecker. --- libthreads.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libthreads.cc b/libthreads.cc index 98df424..4d6a024 100644 --- a/libthreads.cc +++ b/libthreads.cc @@ -23,8 +23,7 @@ int thrd_create(thrd_t *t, thrd_start_t start_routine, void *arg) int thrd_join(thrd_t t) { Thread *th = model->get_thread(thrd_to_id(t)); - while (th->get_state() != THREAD_COMPLETED) - model->switch_to_master(NULL); + model->switch_to_master(new ModelAction(THREAD_JOIN, std::memory_order_seq_cst, th, thrd_to_id(t))); return 0; } -- 2.34.1