X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/0827712fd9204c222e357ab38a6dd097301ed6bb..b0d7c3272f2838a9252c0cf650b9231b07bea4d3:/src/s4u/s4u_Actor.cpp diff --git a/src/s4u/s4u_Actor.cpp b/src/s4u/s4u_Actor.cpp index 349a141710..8fdb474ed3 100644 --- a/src/s4u/s4u_Actor.cpp +++ b/src/s4u/s4u_Actor.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2006-2020. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2006-2021. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -32,8 +32,10 @@ xbt::signal s4u::Actor::on_suspend; xbt::signal s4u::Actor::on_resume; xbt::signal s4u::Actor::on_sleep; xbt::signal s4u::Actor::on_wake_up; -xbt::signal s4u::Actor::on_migration_start; // deprecated -xbt::signal s4u::Actor::on_migration_end; // deprecated +#ifndef DOXYGEN +xbt::signal s4u::Actor::on_migration_start; // XBT_ATTRIB_DEPRECATED_v329 +xbt::signal s4u::Actor::on_migration_end; // XBT_ATTRIB_DEPRECATED_v329 +#endif xbt::signal s4u::Actor::on_host_change; xbt::signal s4u::Actor::on_termination; xbt::signal s4u::Actor::on_destruction; @@ -50,7 +52,7 @@ Actor* Actor::self() ActorPtr Actor::init(const std::string& name, s4u::Host* host) { - kernel::actor::ActorImpl* self = kernel::actor::ActorImpl::self(); + const kernel::actor::ActorImpl* self = kernel::actor::ActorImpl::self(); kernel::actor::ActorImpl* actor = kernel::actor::simcall([self, &name, host] { return self->init(name, host).get(); }); return actor->get_iface(); @@ -73,7 +75,7 @@ ActorPtr Actor::start(const std::function& code) ActorPtr Actor::create(const std::string& name, s4u::Host* host, const std::function& code) { - kernel::actor::ActorImpl* self = kernel::actor::ActorImpl::self(); + const kernel::actor::ActorImpl* self = kernel::actor::ActorImpl::self(); kernel::actor::ActorImpl* actor = kernel::actor::simcall([self, &name, host, &code] { return self->init(name, host)->start(code); }); @@ -103,15 +105,15 @@ int Actor::get_refcount() const // ***** Actor methods ***** -void Actor::join() +void Actor::join() const { join(-1); } -void Actor::join(double timeout) +void Actor::join(double timeout) const { kernel::actor::ActorImpl* issuer = kernel::actor::ActorImpl::self(); - kernel::actor::ActorImpl* target = pimpl_; + const kernel::actor::ActorImpl* target = pimpl_; kernel::actor::simcall_blocking([issuer, target, timeout] { if (target->finished_) { // The joined process is already finished, just wake up the issuer right away @@ -252,7 +254,7 @@ double Actor::get_kill_time() const void Actor::kill() { - kernel::actor::ActorImpl* self = kernel::actor::ActorImpl::self(); + const kernel::actor::ActorImpl* self = kernel::actor::ActorImpl::self(); kernel::actor::simcall([this, self] { self->kill(pimpl_); }); } @@ -260,7 +262,7 @@ void Actor::kill() ActorPtr Actor::by_pid(aid_t pid) { - kernel::actor::ActorImpl* actor = SIMIX_process_from_PID(pid); + kernel::actor::ActorImpl* actor = kernel::actor::ActorImpl::by_PID(pid); if (actor != nullptr) return actor->get_iface(); else @@ -269,7 +271,7 @@ ActorPtr Actor::by_pid(aid_t pid) void Actor::kill_all() { - kernel::actor::ActorImpl* self = kernel::actor::ActorImpl::self(); + const kernel::actor::ActorImpl* self = kernel::actor::ActorImpl::self(); kernel::actor::simcall([self] { self->kill_all(); }); } @@ -353,7 +355,7 @@ void execute(double flops) void execute(double flops, double priority) { - exec_init(flops)->set_priority(priority)->start()->wait(); + exec_init(flops)->set_priority(priority)->vetoable_start()->wait(); } void parallel_execute(const std::vector& hosts, const std::vector& flops_amounts, @@ -370,9 +372,7 @@ void parallel_execute(const std::vector& hosts, const std::vectorset_flops_amount(flops_amount)->set_host(get_host()); - return exec; + return Exec::init()->set_flops_amount(flops_amount)->set_host(get_host()); } ExecPtr exec_init(const std::vector& hosts, const std::vector& flops_amounts, @@ -398,15 +398,13 @@ ExecPtr exec_init(const std::vector& hosts, const std::vectorset_flops_amounts(flops_amounts)->set_bytes_amounts(bytes_amounts)->set_hosts(hosts); - return exec; + return Exec::init()->set_flops_amounts(flops_amounts)->set_bytes_amounts(bytes_amounts)->set_hosts(hosts); } ExecPtr exec_async(double flops) { ExecPtr res = exec_init(flops); - res->start(); + res->vetoable_start(); return res; } @@ -461,7 +459,7 @@ void set_host(Host* new_host) { simgrid::kernel::actor::ActorImpl::self()->get_iface()->set_host(new_host); } -void migrate(Host* new_host) // deprecated +void migrate(Host* new_host) // XBT_ATTRIB_DEPRECATED_v329 { set_host(new_host); } @@ -499,13 +497,13 @@ void sg_actor_start(sg_actor_t actor, xbt_main_func_t code, int argc, const char simgrid::kernel::actor::ActorCode function; if (code) function = simgrid::xbt::wrap_main(code, argc, argv); - actor->start(std::move(function)); + actor->start(function); } sg_actor_t sg_actor_create(const char* name, sg_host_t host, xbt_main_func_t code, int argc, const char* const* argv) { simgrid::kernel::actor::ActorCode function = simgrid::xbt::wrap_main(code, argc, argv); - return simgrid::s4u::Actor::init(name, host)->start(std::move(function)).get(); + return simgrid::s4u::Actor::init(name, host)->start(function).get(); } void sg_actor_set_stacksize(sg_actor_t actor, unsigned size) @@ -665,7 +663,7 @@ void sg_actor_set_host(sg_actor_t actor, sg_host_t host) { actor->set_host(host); } -void sg_actor_migrate(sg_actor_t process, sg_host_t host) // deprecated +void sg_actor_migrate(sg_actor_t process, sg_host_t host) // XBT_ATTRIB_DEPRECATED_v329 { process->set_host(host); } @@ -676,7 +674,7 @@ void sg_actor_migrate(sg_actor_t process, sg_host_t host) // deprecated * @param actor the actor to wait for * @param timeout wait until the actor is over, or the timeout expires */ -void sg_actor_join(sg_actor_t actor, double timeout) +void sg_actor_join(const_sg_actor_t actor, double timeout) { actor->join(timeout); } @@ -786,7 +784,7 @@ sg_actor_t sg_actor_self() return simgrid::s4u::Actor::self(); } -void sg_actor_self_execute(double flops) // XBT_DEPRECATED_v330 +void sg_actor_self_execute(double flops) // XBT_ATTRIB_DEPRECATED_v330 { simgrid::s4u::this_actor::execute(flops); } @@ -873,8 +871,7 @@ sg_exec_t sg_actor_parallel_exec_init(int host_nb, const sg_host_t* host_list, d if (bytes_amount != nullptr) bytes = std::vector(bytes_amount, bytes_amount + host_nb * host_nb); - simgrid::s4u::ExecPtr exec(new simgrid::s4u::Exec()); - exec->set_flops_amounts(flops)->set_bytes_amounts(bytes)->set_hosts(hosts); + simgrid::s4u::ExecPtr exec = simgrid::s4u::this_actor::exec_init(hosts, flops, bytes); exec->add_ref(); return exec.get(); }