HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
UT_ConcurrentPriorityQueue.h
Go to the documentation of this file.
1 /*
2 * PROPRIETARY INFORMATION. This software is proprietary to
3 * Side Effects Software Inc., and is not to be reproduced,
4 * transmitted, or disclosed in any way without written permission.
5 *
6 * NAME: UT_ConcurrentPriorityQueue.h (UT Library, C++)
7 *
8 * COMMENTS: Wrapper around Intel TBB's concurrent_priority_queue container.
9 */
10 
11 #ifndef __UT_CONCURRENTPRIORITYQUEUE_H_INCLUDED__
12 #define __UT_CONCURRENTPRIORITYQUEUE_H_INCLUDED__
13 
14 #include "UT_API.h"
15 #include <tbb/concurrent_priority_queue.h>
16 #include <SYS/SYS_Types.h>
17 
18 // Due to current C++ inadequacies, we have to wrap the TBB template classes
19 // using a define
20 /// @see UT_ConcurrentVector
21 #define UT_ConcurrentPriorityQueue tbb::concurrent_priority_queue
22 
23 template<typename T, typename A>
24 int64
25 UTgetMemoryUsage(const UT_ConcurrentPriorityQueue<T, A> &queue, const bool inclusive)
26 {
27  int64 mem = 0;
28  if (inclusive)
29  mem += sizeof(queue);
30 
31  // NOTE: The internals of tbb::concurrent_priority_queue are a bit of a mystery, so
32  // just count what we know is there, for now.
33  mem += queue.size() * sizeof(T);
34 
35  return mem;
36 }
37 
38 #endif // __UT_CONCURRENTPRIORITYQUEUE_H_INCLUDED__
*get result *(waiting if necessary)*A common idiom is to fire a bunch of sub tasks at the queue
Definition: thread.h:623
long long int64
Definition: SYS_Types.h:116
int64 UTgetMemoryUsage(const UT_ConcurrentPriorityQueue< T, A > &queue, const bool inclusive)