[all-commits] [llvm/llvm-project] 8ef571: [ThreadPool] add ability to group tasks into separ...

Luboš Luňák via All-commits all-commits at lists.llvm.org
Tue May 3 21:19:45 PDT 2022


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 8ef5710e6303904dc9a99019bf9b1a8353397f0c
      https://github.com/llvm/llvm-project/commit/8ef5710e6303904dc9a99019bf9b1a8353397f0c
  Author: Luboš Luňák <l.lunak at centrum.cz>
  Date:   2022-05-04 (Wed, 04 May 2022)

  Changed paths:
    M llvm/include/llvm/Support/ThreadPool.h
    M llvm/lib/Support/ThreadPool.cpp
    M llvm/tools/llvm-profdata/llvm-profdata.cpp
    M llvm/unittests/Support/ThreadPool.cpp

  Log Message:
  -----------
  [ThreadPool] add ability to group tasks into separate groups

This is needed for parallelizing of loading modules symbols in LLDB
(D122975). Currently LLDB can parallelize indexing symbols
when loading a module, but modules are loaded sequentially. If LLDB
index cache is enabled, this means that the cache loading is not
parallelized, even though it could. However doing that creates
a threadpool-within-threadpool situation, so the number of threads
would not be properly limited.

This change adds ThreadPoolTaskGroup as a simple type that can be
used with ThreadPool calls to put tasks into groups that can be
independently waited for (even recursively from within a task)
but still run in the same thread pool.

Differential Revision: https://reviews.llvm.org/D123225


  Commit: 20048f3150cf6c603c8f5a20912561048a868484
      https://github.com/llvm/llvm-project/commit/20048f3150cf6c603c8f5a20912561048a868484
  Author: Luboš Luňák <l.lunak at centrum.cz>
  Date:   2022-05-04 (Wed, 04 May 2022)

  Changed paths:
    M lldb/include/lldb/Core/Debugger.h
    M lldb/source/Core/Debugger.cpp
    M lldb/source/Plugins/SymbolFile/DWARF/ManualDWARFIndex.cpp

  Log Message:
  -----------
  [lldb] use one shared ThreadPool and task groups

As a preparation for parallelizing loading of symbols (D122975),
it is necessary to use just one thread pool to avoid using
a thread pool from inside a task of another thread pool.

Differential Revision: https://reviews.llvm.org/D123226


Compare: https://github.com/llvm/llvm-project/compare/764676b737db...20048f3150cf


More information about the All-commits mailing list