#ifndef SIMGRID_SIMIX_BOOST_CONTEXT_HPP
#define SIMGRID_SIMIX_BOOST_CONTEXT_HPP
+#include <functional>
#include <vector>
#include <xbt/parmap.h>
static bool parallel_;
static xbt_parmap_t parmap_;
static std::vector<BoostContext*> workers_context_;
- static unsigned long threads_working_;
+ static uintptr_t threads_working_;
static xbt_os_thread_key_t worker_id_key_;
static unsigned long process_index_;
static BoostContext* maestro_context_;
protected:
-#if HAVE_BOOST_CONTEXT == 1
+#if HAVE_BOOST_CONTEXTS == 1
boost::context::fcontext_t* fc_ = nullptr;
#else
boost::context::fcontext_t fc_;
void* stack_ = nullptr;
public:
friend BoostContextFactory;
- BoostContext(xbt_main_func_t code,
- int argc, char **argv,
+ BoostContext(std::function<void()> code,
void_pfn_smxprocess_t cleanup_func,
smx_process_t process);
~BoostContext();
BoostContextFactory();
virtual ~BoostContextFactory();
- virtual Context* create_context(
- xbt_main_func_t, int, char **, void_pfn_smxprocess_t,
- smx_process_t process
- ) override;
+ virtual Context* create_context(std::function<void()> code,
+ void_pfn_smxprocess_t, smx_process_t process) override;
void run_all() override;
};