TBB: Что такое главный поток? - PullRequest
0 голосов
/ 10 марта 2020

В документации по TBB есть примечание о резервировании слотов для «главных» потоков на арене:

https://www.threadingbuildingblocks.org/docs/help/reference/task_scheduler/task_arena_cls.html

Главный поток может присоединиться к любому «слоту» потока на арене, но рабочие потоки не могут присоединиться к слоту, зарезервированному для главного потока. Кроме того, арене заданий разрешено более одного мастер-слота. Все идет нормально. Что мне непонятно, что в точности означает быть основным потоком? Это «просто» основной поток приложения? Если так, как может быть более одного главного потока?

1 Ответ

0 голосов
/ 10 марта 2020

Концептуально термин «главный поток» относится к любому потоку приложения, который запускает параллельное задание. Напротив, «рабочий поток» - это поток, созданный TBB, который помогает мастер-потокам обрабатывать их работу.

Специально для task_arena мастер-потоки отправляют задания через API-интерфейс publi c класса, тогда как Рабочие потоки присоединяются к арене через внутренний интерфейс.

Рабочий поток, который присоединился к арене изнутри, также может стать главным потоком на другой арене, если задача, выполняемая на первой арене, вызывает task_arena::execute().

...