X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/0102f0bd149351aaea44dfe8b70fc77e3c074eae..b02538071ffda15d09efbe85f1459e2c4688f68d:/examples/s4u/mutex/s4u_mutex.cpp diff --git a/examples/s4u/mutex/s4u_mutex.cpp b/examples/s4u/mutex/s4u_mutex.cpp deleted file mode 100644 index 2f2afd9ccd..0000000000 --- a/examples/s4u/mutex/s4u_mutex.cpp +++ /dev/null @@ -1,70 +0,0 @@ -/* Copyright (c) 2006-2017. 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. */ - -#include /* std::mutex and std::lock_guard */ -#include "simgrid/s4u.hpp" /* All of S4U */ - -#define NB_ACTOR 6 - -XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_test, "a sample log category"); - -/* This worker uses a classical mutex */ -static void worker(simgrid::s4u::MutexPtr mutex, int& result) -{ - // lock the mutex before enter in the critical section - mutex->lock(); - - XBT_INFO("Hello s4u, I'm ready to compute after a regular lock"); - // And finaly add it to the results - result += 1; - XBT_INFO("I'm done, good bye"); - - // You have to unlock the mutex if you locked it manually. - // Beware of exceptions preventing your unlock() from being executed! - mutex->unlock(); -} - -static void workerLockGuard(simgrid::s4u::MutexPtr mutex, int& result) -{ - // Simply use the std::lock_guard like this - // It's like a lock() that would do the unlock() automatically when getting out of scope - std::lock_guard lock(*mutex); - - // then you are in a safe zone - XBT_INFO("Hello s4u, I'm ready to compute after a lock_guard"); - // update the results - result += 1; - XBT_INFO("I'm done, good bye"); - - // Nothing specific here: the unlock will be automatic -} - -static void master() -{ - int result = 0; - simgrid::s4u::MutexPtr mutex = simgrid::s4u::Mutex::createMutex(); - - for (int i = 0; i < NB_ACTOR * 2 ; i++) { - // To create a worker use the static method simgrid::s4u::Actor. - if((i % 2) == 0 ) - simgrid::s4u::Actor::createActor("worker", simgrid::s4u::Host::by_name("Jupiter"), workerLockGuard, mutex, std::ref(result)); - else - simgrid::s4u::Actor::createActor("worker", simgrid::s4u::Host::by_name("Tremblay"), worker, mutex, std::ref(result)); - } - - simgrid::s4u::this_actor::sleep_for(10); - XBT_INFO("Results is -> %d", result); -} - -int main(int argc, char **argv) -{ - simgrid::s4u::Engine *e = new simgrid::s4u::Engine(&argc,argv); - e->loadPlatform("../../platforms/two_hosts.xml"); - simgrid::s4u::Actor::createActor("main", simgrid::s4u::Host::by_name("Tremblay"), master); - e->run(); - - delete e; - return 0; -}