Merge two loops in ThreadsManager::init()
authorMarco Costalba <mcostalba@gmail.com>
Thu, 22 Mar 2012 21:39:10 +0000 (22:39 +0100)
committerMarco Costalba <mcostalba@gmail.com>
Thu, 22 Mar 2012 21:40:04 +0000 (22:40 +0100)
In analogy with ThreadsManager::exit()

No functional change.

Signed-off-by: Marco Costalba <mcostalba@gmail.com>
src/misc.h
src/thread.cpp

index f37fd5ef5763577bc05e081adc3ad21c3567037e..84ea9cd52b6e286af173ec7e53e1c493ecd26a26 100644 (file)
@@ -30,6 +30,7 @@ extern const std::string engine_info(bool to_uci = false);
 extern int cpu_count();
 extern void timed_wait(WaitCondition&, Lock&, int);
 extern void prefetch(char* addr);
+extern void start_logger(bool b);
 
 extern void dbg_hit_on(bool b);
 extern void dbg_hit_on_c(bool c, bool b);
@@ -60,6 +61,4 @@ private:
   sys_time_t t;
 };
 
-extern void start_logger(bool b);
-
 #endif // !defined(MISC_H_INCLUDED)
index 358ced5dec3bf26eb823af4bd82ad8041801ca89..31c5961d2fc104f7af2d12afec86f7ee73f56ea2 100644 (file)
@@ -221,15 +221,6 @@ void ThreadsManager::init() {
   cond_init(sleepCond);
   lock_init(splitLock);
 
-  for (int i = 0; i <= MAX_THREADS; i++)
-  {
-      lock_init(threads[i].sleepLock);
-      cond_init(threads[i].sleepCond);
-
-      for (int j = 0; j < MAX_SPLITPOINTS_PER_THREAD; j++)
-          lock_init(threads[i].splitPoints[j].lock);
-  }
-
   // Allocate main thread tables to call evaluate() also when not searching
   threads[0].pawnTable.init();
   threads[0].materialTable.init();
@@ -241,6 +232,12 @@ void ThreadsManager::init() {
       threads[i].do_sleep = (i != 0); // Avoid a race with start_thinking()
       threads[i].threadID = i;
 
+      lock_init(threads[i].sleepLock);
+      cond_init(threads[i].sleepCond);
+
+      for (int j = 0; j < MAX_SPLITPOINTS_PER_THREAD; j++)
+          lock_init(threads[i].splitPoints[j].lock);
+
       if (!thread_create(threads[i].handle, start_routine, threads[i]))
       {
           std::cerr << "Failed to create thread number " << i << std::endl;