MCPcopy Create free account
hub / github.com/cameron314/concurrentqueue / assert_task_pool_valid

Method assert_task_pool_valid

benchmarks/tbb/scheduler.cpp:155–172  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

153
154#if TBB_USE_ASSERT > 1
155void generic_scheduler::assert_task_pool_valid() const {
156 acquire_task_pool();
157 task** tp = my_arena_slot->task_pool_ptr;
158 __TBB_ASSERT( my_arena_slot->my_task_pool_size >= min_task_pool_size, NULL );
159 const size_t H = __TBB_load_relaxed(my_arena_slot->head); // mirror
160 const size_t T = __TBB_load_relaxed(my_arena_slot->tail); // mirror
161 __TBB_ASSERT( H <= T, NULL );
162 for ( size_t i = 0; i < H; ++i )
163 __TBB_ASSERT( tp[i] == poisoned_ptr, "Task pool corrupted" );
164 for ( size_t i = H; i < T; ++i ) {
165 __TBB_ASSERT( (uintptr_t)tp[i] + 1 > 1u, "nil or invalid task pointer in the deque" );
166 __TBB_ASSERT( tp[i]->prefix().state == task::ready ||
167 tp[i]->prefix().extra_state == es_task_proxy, "task in the deque has invalid state" );
168 }
169 for ( size_t i = T; i < my_arena_slot->my_task_pool_size; ++i )
170 __TBB_ASSERT( tp[i] == poisoned_ptr, "Task pool corrupted" );
171 release_task_pool();
172}
173#endif /* TBB_USE_ASSERT > 1 */
174
175void generic_scheduler::init_stack_info () {

Callers 2

allocate_schedulerMethod · 0.45
task.cppFile · 0.45

Calls 1

__TBB_load_relaxedFunction · 0.85

Tested by

no test coverage detected