X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/a0c8da3bbcebc9266ce49ee6e48c2b1d52b4a5f8..596e36117322c22fd31372e7803bc197bcd4a016:/src/s4u/s4u_Engine.cpp diff --git a/src/s4u/s4u_Engine.cpp b/src/s4u/s4u_Engine.cpp index 2aa9dbcf0f..094e8311d1 100644 --- a/src/s4u/s4u_Engine.cpp +++ b/src/s4u/s4u_Engine.cpp @@ -86,11 +86,6 @@ const std::vector& Engine::get_cmdline() const return pimpl_->get_cmdline(); } -void Engine::shutdown() // XBT_ATTRIB_DEPRECATED_v335 -{ - delete Engine::instance_; -} - double Engine::get_clock() { if (MC_is_active() || MC_record_replay_is_active()) { @@ -248,13 +243,13 @@ std::string Engine::flatify_platform() const ss << "\n"; ss << "\n"; ss << "\n"; - ss << "get_name() << "\" routing=\"Full\">\n"; + ss << "get_name() << "\" routing=\"Full\">\n"; flatify_hosts(*this, ss); flatify_links(*this, ss); flatify_routes(*this, ss); - ss << "\n"; + ss << "\n"; ss << "\n"; return ss.str(); } @@ -405,6 +400,20 @@ Mailbox* Engine::mailbox_by_name_or_create(const std::string& name) const return mbox->get_iface(); } +MessageQueue* Engine::message_queue_by_name_or_create(const std::string& name) const +{ + /* two actors may have pushed the same mbox_create simcall at the same time */ + kernel::activity::MessageQueueImpl* queue = kernel::actor::simcall_answered([&name, this] { + auto [m, inserted] = pimpl_->mqueues_.try_emplace(name, nullptr); + if (inserted) { + m->second = new kernel::activity::MessageQueueImpl(name); + XBT_DEBUG("Creating a message queue at %p with name %s", m->second, name.c_str()); + } + return m->second; + }); + return queue->get_iface(); +} + /** @brief Returns the amount of links in the platform */ size_t Engine::get_link_count() const {