17 #ifndef _TBB_scheduler_utility_H 18 #define _TBB_scheduler_utility_H 55 template<
typename T,
size_t max_segments = 16>
66 __TBB_ASSERT ( initial_segment && segment_size,
"Nonempty initial segment must be supplied");
size_t m_num_segments
Number of segments (the size of m_segments)
Used to form groups of tasks.
Work stealing task scheduler.
Bitwise-OR of local_task and small_task.
internal::task_prefix & prefix(internal::version_tag *=NULL) const
Get reference to corresponding task_prefix.
void *__TBB_EXPORTED_FUNC NFS_Allocate(size_t n_element, size_t element_size, void *hint)
Allocate memory on cache/sector line boundary.
Smart holder for the empty task class with automatic destruction.
size_t m_size
Number of items in the segments in m_segments.
Base class for user-defined tasks.
size_t m_pos
Insertion position in m_cur_segment.
generic_scheduler * my_scheduler
void free_task(task &t)
Put task on free list.
void push_back(const T &val)
#define __TBB_CONTEXT_ARG(arg1, context)
T * m_cur_segment
The current (not completely filled) segment.
size_t m_cur_segment_size
Capacity of m_cur_segment.
Vector that grows without reallocations, and stores items in the reverse order.
task that does nothing. Useful for synchronization.
fast_reverse_vector(T *initial_segment, size_t segment_size)
T * m_segments[max_segments]
Array of segments (has fixed size specified by the second template parameter)
void __TBB_EXPORTED_FUNC NFS_Free(void *)
Free memory allocated by NFS_Allocate.
void const char const char int ITT_FORMAT __itt_group_sync s
#define __TBB_ASSERT(predicate, comment)
No-op version of __TBB_ASSERT.
void copy_memory(T *dst) const
Copies the contents of the vector into the dst array.
auto_empty_task(__TBB_CONTEXT_ARG(generic_scheduler *s, task_group_context *context))
Memory prefix to a task object.