X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/dccf1b41e9c7b5a696f01abceaa2779fe65f154f..e41d2dbe8c7406672257c3d37a2350882a380150:/src/kernel/context/ContextThread.cpp diff --git a/src/kernel/context/ContextThread.cpp b/src/kernel/context/ContextThread.cpp index 9b6d207425..4ed2f29012 100644 --- a/src/kernel/context/ContextThread.cpp +++ b/src/kernel/context/ContextThread.cpp @@ -1,5 +1,4 @@ -/* Copyright (c) 2009-2015. The SimGrid Team. - * All rights reserved. */ +/* Copyright (c) 2009-2017. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -52,16 +51,14 @@ ThreadContext* ThreadContextFactory::create_context( std::function code, void_pfn_smxprocess_t cleanup, smx_actor_t process) { - return this->new_context(std::move(code), cleanup, process, !code); + return this->new_context(std::move(code), cleanup, process, not code); } void ThreadContextFactory::run_all() { if (smx_ctx_thread_sem == nullptr) { // Serial execution - smx_actor_t process; - unsigned int cursor; - xbt_dynar_foreach(simix_global->process_to_run, cursor, process) { + for (smx_actor_t process : simix_global->process_to_run) { XBT_DEBUG("Handling %p",process); ThreadContext* context = static_cast(process->context); xbt_os_sem_release(context->begin_); @@ -69,12 +66,10 @@ void ThreadContextFactory::run_all() } } else { // Parallel execution - unsigned int index; - smx_actor_t process; - xbt_dynar_foreach(simix_global->process_to_run, index, process) + for (smx_actor_t process : simix_global->process_to_run) xbt_os_sem_release(static_cast(process->context)->begin_); - xbt_dynar_foreach(simix_global->process_to_run, index, process) - xbt_os_sem_acquire(static_cast(process->context)->end_); + for (smx_actor_t process : simix_global->process_to_run) + xbt_os_sem_acquire(static_cast(process->context)->end_); } } @@ -115,7 +110,7 @@ ThreadContext::ThreadContext(std::function code, * name, but now the name is stored at SIMIX level, so we pass a null */ this->thread_ = xbt_os_thread_create(nullptr, - maestro ? ThreadContext::maestro_wrapper : ThreadContext::wrapper, + maestro ? &ThreadContext::maestro_wrapper : &ThreadContext::wrapper, this, this); /* wait the starting of the newly created process */ xbt_os_sem_acquire(this->end_);