HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Threading.h
Go to the documentation of this file.
1 // Copyright Contributors to the OpenVDB Project
2 // SPDX-License-Identifier: MPL-2.0
3 //
4 /// @file Threading.h
5 
6 #ifndef OPENVDB_THREAD_THREADING_HAS_BEEN_INCLUDED
7 #define OPENVDB_THREAD_THREADING_HAS_BEEN_INCLUDED
8 
9 #include "openvdb/version.h"
10 
11 #ifndef __TBB_show_deprecation_message_task_H
12  #define __TBB_show_deprecation_message_task_H
13  #define OPENVDB_THREAD_THREADING_RESTORE_DEPRECATION_MESSAGE_TASK
14 #endif
15 
16 
17 /// @note tbb/blocked_range.h is the ONLY include that persists from TBB 2020
18 /// to TBB 2021 that itself includes the TBB specific version header files.
19 /// In TBB 2020, the version header was called tbb/stddef.h. In 2021, it's
20 /// called tbb/version.h. We include tbb/blocked_range.h here to indirectly
21 /// access the version defines in a consistent way so that downstream
22 /// software doesn't need to provide compile time defines.
23 #include <tbb/blocked_range.h>
24 #include <tbb/task.h>
25 #include <tbb/task_group.h>
26 
27 namespace openvdb {
29 namespace OPENVDB_VERSION_NAME {
30 namespace thread {
31 
32 inline bool cancelGroupExecution()
33 {
34  // @note 12000 was the 2021.1-beta05 release. The 2021.1-beta08 release
35  // introduced current_context().
36 #if TBB_INTERFACE_VERSION >= 12002
37  auto ctx = tbb::task::current_context();
38  return ctx ? ctx->cancel_group_execution() : false;
39 #else
40  return tbb::task::self().cancel_group_execution();
41 #endif
42 }
43 
45 {
46  // @note 12000 was the 2021.1-beta05 release. The 2021.1-beta08 release
47  // introduced current_context().
48 #if TBB_INTERFACE_VERSION >= 12002
49  auto ctx = tbb::task::current_context();
50  return ctx ? ctx->is_group_execution_cancelled() : false;
51 #else
52  return tbb::task::self().is_cancelled();
53 #endif
54 }
55 
56 } // namespace thread
57 } // namespace OPENVDB_VERSION_NAME
58 } // namespace openvdb
59 
60 #ifdef OPENVDB_THREAD_THREADING_RESTORE_DEPRECATION_MESSAGE_TASK
61  #undef __TBB_show_deprecation_message_task_H
62  #undef OPENVDB_THREAD_THREADING_RESTORE_DEPRECATION_MESSAGE_TASK
63 #endif
64 
65 
66 #endif // OPENVDB_THREAD_THREADING_HAS_BEEN_INCLUDED
#define OPENVDB_USE_VERSION_NAMESPACE
Definition: version.h:178
**Note that the tasks the is the thread number *for the or if it s being executed by a non pool thread(this *can happen in cases where the whole pool is occupied and the calling *thread contributes to running the work load).**Thread pool.Have fun
Library and file format version numbers.
#define OPENVDB_VERSION_NAME
The version namespace name for this library version.
Definition: version.h:114