// conveniently handles the success/failure value for us.
typedef typename std::result_of<F()>::type R;
simgrid::xbt::Result<R> result;
- simcall_run_kernel([&]{
- simgrid::xbt::fulfillPromise(result, std::forward<F>(code));
- });
+ simcall_run_kernel([&] { simgrid::xbt::fulfill_promise(result, std::forward<F>(code)); });
return result.get();
}
XBT_PUBLIC void register_function(const char* name, ActorCodeFactory factory);
-/** These functions will be called when we detect a deadlock: any remaining process is locked on an action
- *
- * If these functions manage to unlock some of the processes, then the deadlock will be avoided.
- */
-XBT_PUBLIC_DATA simgrid::xbt::signal<void()> onDeadlock;
}
}
* std::map<std::string, std::string>* props: properties
*/
typedef smx_actor_t (*smx_creation_func_t)(
- /* name */ const char*, std::function<void()> code,
+ /* name */ const char*, simgrid::simix::ActorCode code,
/* userdata */ void*,
/* hostname */ sg_host_t,
/* props */ std::unordered_map<std::string, std::string>*,
XBT_PUBLIC void SIMIX_function_register_process_create(smx_creation_func_t function);
-XBT_PUBLIC smx_actor_t simcall_process_create(const char* name, std::function<void()> code, void* data, sg_host_t host,
+XBT_PUBLIC smx_actor_t simcall_process_create(const char* name, simgrid::simix::ActorCode code, void* data, sg_host_t host,
std::unordered_map<std::string, std::string>* properties);
XBT_PUBLIC smx_timer_t SIMIX_timer_set(double date, simgrid::xbt::Task<void()> callback);