Threading.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. //===-- llvm/Support/Threading.h - Control multithreading mode --*- C++ -*-===//
  2. //
  3. // The LLVM Compiler Infrastructure
  4. //
  5. // This file is distributed under the University of Illinois Open Source
  6. // License. See LICENSE.TXT for details.
  7. //
  8. //===----------------------------------------------------------------------===//
  9. //
  10. // This file declares helper functions for running LLVM in a multi-threaded
  11. // environment.
  12. //
  13. //===----------------------------------------------------------------------===//
  14. #ifndef LLVM_SUPPORT_THREADING_H
  15. #define LLVM_SUPPORT_THREADING_H
  16. namespace llvm {
  17. /// Returns true if LLVM is compiled with support for multi-threading, and
  18. /// false otherwise.
  19. bool llvm_is_multithreaded();
  20. /// llvm_execute_on_thread - Execute the given \p UserFn on a separate
  21. /// thread, passing it the provided \p UserData and waits for thread
  22. /// completion.
  23. ///
  24. /// This function does not guarantee that the code will actually be executed
  25. /// on a separate thread or honoring the requested stack size, but tries to do
  26. /// so where system support is available.
  27. ///
  28. /// \param UserFn - The callback to execute.
  29. /// \param UserData - An argument to pass to the callback function.
  30. /// \param RequestedStackSize - If non-zero, a requested size (in bytes) for
  31. /// the thread stack.
  32. void llvm_execute_on_thread(void (*UserFn)(void*), void *UserData,
  33. unsigned RequestedStackSize = 0);
  34. }
  35. #endif