From: Gabriel Corona Date: Fri, 24 Jun 2016 14:40:57 +0000 (+0200) Subject: [simix] Use Task instead of std::package_task for timer callbacks X-Git-Tag: v3_14~875 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/1c906c940df81c81038fbad6d6150cdcfa1709d5 [simix] Use Task instead of std::package_task for timer callbacks --- diff --git a/include/simgrid/simix.hpp b/include/simgrid/simix.hpp index eb92f4262b..a4824d0c37 100644 --- a/include/simgrid/simix.hpp +++ b/include/simgrid/simix.hpp @@ -13,7 +13,6 @@ #include #include #include -#include #include #include @@ -215,12 +214,12 @@ XBT_PUBLIC(smx_process_t) simcall_process_create(const char *name, xbt_dict_t properties, int auto_restart); -XBT_PUBLIC(smx_timer_t) SIMIX_timer_set(double date, std::packaged_task callback); +XBT_PUBLIC(smx_timer_t) SIMIX_timer_set(double date, simgrid::xbt::Task callback); template inline XBT_PUBLIC(smx_timer_t) SIMIX_timer_set(double date, F callback) { - return SIMIX_timer_set(date, std::packaged_task(std::move(callback))); + return SIMIX_timer_set(date, simgrid::xbt::Task(std::move(callback))); } template inline diff --git a/src/simix/smx_global.cpp b/src/simix/smx_global.cpp index 82691e1545..7544d36a84 100644 --- a/src/simix/smx_global.cpp +++ b/src/simix/smx_global.cpp @@ -5,13 +5,14 @@ * under the terms of the license (GNU LGPL) which comes with this package. */ #include -#include #include #include /* Signal handling */ #include #include "src/internal_config.h" +#include + #include "src/surf/surf_interface.hpp" #include "src/surf/storage_interface.hpp" #include "src/surf/xml/platf.hpp" @@ -52,10 +53,10 @@ static xbt_heap_t simix_timers = nullptr; /** @brief Timer datatype */ typedef struct s_smx_timer { double date = 0.0; - std::packaged_task callback; + simgrid::xbt::Task callback; s_smx_timer() {} - s_smx_timer(double date, std::packaged_task callback) + s_smx_timer(double date, simgrid::xbt::Task callback) : date(date), callback(std::move(callback)) {} } s_smx_timer_t; @@ -531,15 +532,14 @@ void SIMIX_run(void) * \param arg Parameters of the function * */ -smx_timer_t SIMIX_timer_set(double date, void (*function)(void*), void *arg) +smx_timer_t SIMIX_timer_set(double date, void (*callback)(void*), void *arg) { - smx_timer_t timer = new s_smx_timer_t(date, - std::packaged_task(std::bind(function, arg))); + smx_timer_t timer = new s_smx_timer_t(date, [=](){ callback(arg); }); xbt_heap_push(simix_timers, timer, date); return timer; } -smx_timer_t SIMIX_timer_set(double date, std::packaged_task callback) +smx_timer_t SIMIX_timer_set(double date, simgrid::xbt::Task callback) { smx_timer_t timer = new s_smx_timer_t(date, std::move(callback)); xbt_heap_push(simix_timers, timer, date);