namespace simgrid {
namespace kernel {
namespace context {
+static thread_local smx_context_t smx_current_context;
ContextFactoryInitializer factory_initializer = nullptr;
Context* ContextFactory::self()
{
- return SIMIX_context_get_current();
+ return smx_current_context;
}
void Context::declare_context(std::size_t size)
return nullptr;
}
+/**
+ * @brief Sets the current context of this thread.
+ * @param context the context to set
+ */
+void SIMIX_context_set_current(smx_context_t context)
+{
+ simgrid::kernel::context::smx_current_context = context;
+}
virtual Context* create_maestro(std::function<void()> code, smx_actor_t process);
virtual void run_all() = 0;
+ /** @brief Returns the current context of this thread. */
virtual Context* self();
std::string const& name() const { return name_; }
XBT_PRIVATE void SIMIX_context_stack_delete(void *stack);
XBT_PUBLIC void SIMIX_context_set_current(smx_context_t context);
-XBT_PRIVATE smx_context_t SIMIX_context_get_current();
XBT_PUBLIC int SIMIX_process_get_maxpid();
int smx_context_stack_size_was_set = 0;
unsigned smx_context_guard_size;
int smx_context_guard_size_was_set = 0;
-static thread_local smx_context_t smx_current_context;
static int smx_parallel_contexts = 1;
static int smx_parallel_threshold = 2;
static e_xbt_parmap_mode_t smx_parallel_synchronization_mode = XBT_PARMAP_DEFAULT;
void SIMIX_context_set_parallel_mode(e_xbt_parmap_mode_t mode) {
smx_parallel_synchronization_mode = mode;
}
-
-/**
- * @brief Returns the current context of this thread.
- * @return the current context of this thread
- */
-smx_context_t SIMIX_context_get_current()
-{
- return smx_current_context;
-}
-
-/**
- * @brief Sets the current context of this thread.
- * @param context the context to set
- */
-void SIMIX_context_set_current(smx_context_t context)
-{
- smx_current_context = context;
-}