1 from argparse import ArgumentParser
2 from dataclasses import dataclass
5 from simgrid import Actor, Engine, Host, Mutex, this_actor
8 def create_parser() -> ArgumentParser:
9 parser = ArgumentParser()
14 help='path to the platform description'
20 help='how many pairs of actors should be started'
30 def worker_context_manager(mutex: Mutex, result: ResultHolder):
32 this_actor.info(f"Hello simgrid, I'm ready to compute after acquiring the mutex from a context manager")
34 this_actor.info(f"I'm done, good bye")
37 def worker(mutex: Mutex, result: ResultHolder):
39 this_actor.info("Hello simgrid, I'm ready to compute after a regular lock")
42 this_actor.info("I'm done, good bye")
46 results = [ResultHolder(value=0) for _ in range(settings.actors)]
47 for i in range(settings.actors):
49 Actor.create(f"worker-{i}(mgr)", Host.by_name("Jupiter"), worker_context_manager, mutex, results[i])
50 Actor.create(f"worker-{i}", Host.by_name("Tremblay"), worker, mutex, results[i])
51 this_actor.sleep_for(10)
52 for i in range(settings.actors):
53 this_actor.info(f"Result[{i}] -> {results[i].value}")
54 this_actor.info("I'm done, good bye")
58 settings = create_parser().parse_known_args()[0]
60 e.load_platform(settings.platform)
61 Actor.create("master", Host.by_name("Tremblay"), master, settings)
65 if __name__ == "__main__":