Lines Matching refs:td

443 void arena::enqueue_task(d1::task& t, d1::task_group_context& ctx, thread_data& td) {  in enqueue_task()  argument
444 task_group_context_impl::bind_to(ctx, &td); in enqueue_task()
447 my_fifo_task_stream.push( &t, random_lane_selector(td.my_random) ); in enqueue_task()
579 thread_data* td = governor::get_thread_data_if_initialized(); in attach() local
580 if( td && td->my_arena ) { in attach()
581 arena* a = td->my_arena; in attach()
599 …thread_data* td = governor::get_thread_data(); // thread data is only needed for FastRandom insta… in enqueue() local
600 assert_pointer_valid(td, "thread_data pointer should not be null"); in enqueue()
603 : td->my_arena in enqueue()
611 a->enqueue_task(t, *ctx, *td); in enqueue()
616 nested_arena_context(thread_data& td, arena& nested_arena, std::size_t slot_index) in nested_arena_context() argument
617 : m_orig_execute_data_ext(td.my_task_dispatcher->m_execute_data_ext) in nested_arena_context()
619 if (td.my_arena != &nested_arena) { in nested_arena_context()
620 m_orig_arena = td.my_arena; in nested_arena_context()
621 m_orig_slot_index = td.my_arena_index; in nested_arena_context()
622 m_orig_last_observer = td.my_last_observer; in nested_arena_context()
624 td.detach_task_dispatcher(); in nested_arena_context()
625 td.attach_arena(nested_arena, slot_index); in nested_arena_context()
626 if (td.my_inbox.is_idle_state(true)) in nested_arena_context()
627 td.my_inbox.set_is_idle(false); in nested_arena_context()
628 task_dispatcher& task_disp = td.my_arena_slot->default_task_dispatcher(); in nested_arena_context()
629td.enter_task_dispatcher(task_disp, m_orig_execute_data_ext.task_disp->m_stealing_threshold); in nested_arena_context()
633 if (td.my_arena_index >= td.my_arena->my_num_reserved_slots) { in nested_arena_context()
634 td.my_arena->request_workers(/* mandatory_delta = */ 0, /* workers_delta = */ -1); in nested_arena_context()
637 td.my_last_observer = nullptr; in nested_arena_context()
639 td.my_arena->my_observers.notify_entry_observers(td.my_last_observer, /* worker*/false); in nested_arena_context()
642 m_task_dispatcher = td.my_task_dispatcher; in nested_arena_context()
647 execution_data_ext& ed_ext = td.my_task_dispatcher->m_execute_data_ext; in nested_arena_context()
648 ed_ext.context = td.my_arena->my_default_ctx; in nested_arena_context()
649 ed_ext.original_slot = td.my_arena_index; in nested_arena_context()
651 ed_ext.task_disp = td.my_task_dispatcher; in nested_arena_context()
654 __TBB_ASSERT(td.my_arena_slot, nullptr); in nested_arena_context()
655 __TBB_ASSERT(td.my_arena_slot->is_occupied(), nullptr); in nested_arena_context()
656 __TBB_ASSERT(td.my_task_dispatcher, nullptr); in nested_arena_context()
659 thread_data& td = *m_task_dispatcher->m_thread_data; in ~nested_arena_context() local
660 __TBB_ASSERT(governor::is_thread_data_set(&td), nullptr); in ~nested_arena_context()
664 td.my_arena->my_observers.notify_exit_observers(td.my_last_observer, /*worker*/ false); in ~nested_arena_context()
665 td.my_last_observer = m_orig_last_observer; in ~nested_arena_context()
669 if (td.my_arena_index >= td.my_arena->my_num_reserved_slots) { in ~nested_arena_context()
670 td.my_arena->request_workers(/* mandatory_delta = */ 0, /* workers_delta = */ 1); in ~nested_arena_context()
673 td.leave_task_dispatcher(); in ~nested_arena_context()
674 td.my_arena_slot->release(); in ~nested_arena_context()
675 td.my_arena->my_exit_monitors.notify_one(); // do not relax! in ~nested_arena_context()
677 td.attach_arena(*m_orig_arena, m_orig_slot_index); in ~nested_arena_context()
678 td.attach_task_dispatcher(*m_orig_execute_data_ext.task_disp); in ~nested_arena_context()
679 __TBB_ASSERT(td.my_inbox.is_idle_state(false), nullptr); in ~nested_arena_context()
681 td.my_task_dispatcher->m_execute_data_ext = m_orig_execute_data_ext; in ~nested_arena_context()
743 thread_data* td = governor::get_thread_data(); in execute() local
745 bool same_arena = td->my_arena == a; in execute()
746 std::size_t index1 = td->my_arena_index; in execute()
748 index1 = a->occupy_free_slot</*as_worker */false>(*td); in execute()
756 a->enqueue_task( dt, exec_context, *td); in execute()
764 index2 = a->occupy_free_slot</*as_worker*/false>(*td); in execute()
767 nested_arena_context scope(*td, *a, index2 ); in execute()
785 __TBB_ASSERT(governor::is_thread_data_set(td), nullptr); in execute()
792 nested_arena_context scope(*td, *a, index1); in execute()
797 __TBB_ASSERT(same_arena || governor::is_thread_data_set(td), nullptr); in execute()
809 thread_data* td = governor::get_thread_data(); in wait() local
810 __TBB_ASSERT_EX(td, "Scheduler is not initialized"); in wait()
811 …__TBB_ASSERT(td->my_arena != a || td->my_arena_index == 0, "internal_wait is not supported within … in wait()
823 else if( thread_data* td = governor::get_thread_data_if_initialized() ) in max_concurrency() local
824 a = td->my_arena; // the current arena if any in max_concurrency()