Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Rely on template argument deduction (sonar, c++17).
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Mon, 25 Apr 2022 12:54:12 +0000 (14:54 +0200)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Mon, 25 Apr 2022 13:35:21 +0000 (15:35 +0200)
examples/cpp/synchro-condition-variable-waituntil/s4u-synchro-condition-variable-waituntil.cpp
examples/cpp/synchro-condition-variable/s4u-synchro-condition-variable.cpp
examples/cpp/synchro-mutex/s4u-synchro-mutex.cpp
src/include/xbt/parmap.hpp
src/s4u/s4u_ConditionVariable.cpp
src/xbt/OsSemaphore.hpp
src/xbt/random.cpp
src/xbt/random_test.cpp

index 69ccef1..e64a76b 100644 (file)
@@ -16,7 +16,7 @@ bool ready = false;
 static void competitor(int id)
 {
   XBT_INFO("Entering the race...");
-  std::unique_lock<sg4::Mutex> lck(*mtx);
+  std::unique_lock lck(*mtx);
   while (not ready) {
     auto now = sg4::Engine::get_clock();
     if (cv->wait_until(lck, now + (id+1)*0.25) == std::cv_status::timeout) {
@@ -33,7 +33,7 @@ static void go()
 {
   XBT_INFO("Are you ready? ...");
   sg4::this_actor::sleep_for(3);
-  std::unique_lock<sg4::Mutex> lck(*mtx);
+  std::unique_lock lck(*mtx);
   XBT_INFO("Go go go!");
   ready = true;
   cv->notify_all();
index 2805c7c..3602e1d 100644 (file)
@@ -14,7 +14,7 @@ bool done = false;
 
 static void worker_fun(sg4::ConditionVariablePtr cv, sg4::MutexPtr mutex)
 {
-  std::unique_lock<sg4::Mutex> lock(*mutex);
+  std::unique_lock lock(*mutex);
 
   XBT_INFO("Start processing data which is '%s'.", data.c_str());
   data += std::string(" after processing");
index faa8d2b..a17d574 100644 (file)
@@ -33,7 +33,7 @@ static void workerLockGuard(sg4::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<sg4::Mutex> lock(*mutex);
+  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");
index 48ce17e..be13332 100644 (file)
@@ -310,7 +310,7 @@ template <typename T> void Parmap<T>::worker_main(ThreadData* data)
 
 template <typename T> void Parmap<T>::PosixSynchro::master_signal()
 {
-  std::unique_lock<std::mutex> lk(ready_mutex);
+  std::unique_lock lk(ready_mutex);
   this->parmap.thread_counter = 1;
   this->parmap.work_round++;
   /* wake all workers */
@@ -319,14 +319,14 @@ template <typename T> void Parmap<T>::PosixSynchro::master_signal()
 
 template <typename T> void Parmap<T>::PosixSynchro::master_wait()
 {
-  std::unique_lock<std::mutex> lk(done_mutex);
+  std::unique_lock lk(done_mutex);
   /* wait for all workers to be ready */
   done_cond.wait(lk, [this]() { return this->parmap.thread_counter >= this->parmap.num_workers; });
 }
 
 template <typename T> void Parmap<T>::PosixSynchro::worker_signal()
 {
-  std::unique_lock<std::mutex> lk(done_mutex);
+  std::unique_lock lk(done_mutex);
   this->parmap.thread_counter++;
   if (this->parmap.thread_counter == this->parmap.num_workers) {
     /* all workers have finished, wake the controller */
@@ -336,7 +336,7 @@ template <typename T> void Parmap<T>::PosixSynchro::worker_signal()
 
 template <typename T> void Parmap<T>::PosixSynchro::worker_wait(unsigned expected_round)
 {
-  std::unique_lock<std::mutex> lk(ready_mutex);
+  std::unique_lock lk(ready_mutex);
   /* wait for more work */
   ready_cond.wait(lk, [this, expected_round]() { return this->parmap.work_round == expected_round; });
 }
index 6ad846c..2558b04 100644 (file)
@@ -111,7 +111,7 @@ void sg_cond_wait(sg_cond_t cond, sg_mutex_t mutex)
 
 int sg_cond_wait_for(sg_cond_t cond, sg_mutex_t mutex, double delay)
 {
-  std::unique_lock<simgrid::s4u::Mutex> lock(*mutex);
+  std::unique_lock lock(*mutex);
   return cond->wait_for(lock, delay) == std::cv_status::timeout;
 }
 
index 47a946c..b29a665 100644 (file)
@@ -16,14 +16,14 @@ public:
 
   inline void acquire()
   {
-    std::unique_lock<std::mutex> lock(mutex_);
+    std::unique_lock lock(mutex_);
     condition_.wait(lock, [this]() { return capa_ > 0; });
     --capa_;
   }
 
   inline void release()
   {
-    std::unique_lock<std::mutex> lock(mutex_);
+    std::unique_lock lock(mutex_);
     ++capa_;
     condition_.notify_one();
   }
index 449207c..af2cfd4 100644 (file)
@@ -41,25 +41,25 @@ bool Random::write_state(const std::string& filename) const
 
 int StdRandom::uniform_int(int min, int max)
 {
-  std::uniform_int_distribution<> dist(min, max);
+  std::uniform_int_distribution dist(min, max);
   return dist(mt19937_gen);
 }
 
 double StdRandom::uniform_real(double min, double max)
 {
-  std::uniform_real_distribution<> dist(min, max);
+  std::uniform_real_distribution dist(min, max);
   return dist(mt19937_gen);
 }
 
 double StdRandom::exponential(double lambda)
 {
-  std::exponential_distribution<> dist(lambda);
+  std::exponential_distribution dist(lambda);
   return dist(mt19937_gen);
 }
 
 double StdRandom::normal(double mean, double sd)
 {
-  std::normal_distribution<> dist(mean, sd);
+  std::normal_distribution dist(mean, sd);
   return dist(mt19937_gen);
 }
 
index eed3783..f743898 100644 (file)
@@ -43,10 +43,10 @@ TEST_CASE("xbt::random: Random Number Generation")
     simgrid::xbt::random::set_implem_std();
     simgrid::xbt::random::set_mersenne_seed(12345);
 
-    std::exponential_distribution<> distA(25);
-    std::uniform_int_distribution<> distB(1, 6);
-    std::uniform_real_distribution<> distC(0, 1);
-    std::normal_distribution<> distD(0, 2);
+    std::exponential_distribution distA(25.0);
+    std::uniform_int_distribution distB(1, 6);
+    std::uniform_real_distribution distC(0.0, 1.0);
+    std::normal_distribution distD(0.0, 2.0);
 
     REQUIRE_THAT(simgrid::xbt::random::exponential(25), EpsilonApprox(distA(gen)));
     REQUIRE(simgrid::xbt::random::uniform_int(1, 6) == distB(gen));