[PATCH] D70447: [Support] ThreadPoolExecutor fixes for Windows/MinGW

Fangrui Song via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jan 3 17:53:41 PST 2020


MaskRay added inline comments.


================
Comment at: llvm/lib/Support/Parallel.cpp:47
+    Threads.resize(1);
+    std::unique_lock<std::mutex> Lock(Mutex);
+    Threads[0] = std::thread([&, ThreadCount] {
----------------
std::lock_guard


================
Comment at: llvm/lib/Support/Parallel.cpp:51
+        Threads.emplace_back([=] { work(); });
+        if (Stop)
+          break;
----------------
Why `if (Stop) break`


================
Comment at: llvm/lib/Support/Parallel.cpp:74
+      if (T.get_id() == CurrentThreadId)
+        T.detach();
+      else
----------------
Why `detach`?


================
Comment at: llvm/lib/Support/Parallel.cpp:79
 
+  struct Creator {
+    static void *call() { return new ThreadPoolExecutor(); }
----------------
You can use
```lang=cpp
  static ManagedStatic<ThreadPoolExecutor, object_creator<ThreadPoolExecutor>,
                       ThreadPoolExecutor::Deleter>
      ManagedExec;
```


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D70447/new/

https://reviews.llvm.org/D70447





More information about the llvm-commits mailing list