TLAB в виртуальном потоке - Project Loom
Как в настоящее время TLAB обрабатывает виртуальный поток, представленный Project Loom в Java? Доступен ли TLAB в виртуальных потоках?
1 ответ
Виртуальные потоки не имеют TLAB — они им не нужны.
Из перехода внутрь Java Project Loom и виртуальных потоков :
Очевидно, что в какой-то момент виртуальные потоки должны быть присоединены к реальному потоку ОС для выполнения. Эти потоки ОС, в которых выполняется виртуальный поток, называются потоками-носителями .
Если виртуальный поток не подключен к потоку-носителю, он не выполняет никаких инструкций и, следовательно, не может выделить память — ему не нужен TLAB.
Если он присоединен к потоку-носителю, он выполняет инструкции и, следовательно, может выделять память. Для этого выделения памяти он может безопасно использовать TLAB потока-носителя.
Здесь нет спора:
- в любой момент времени поток-носитель выполняет ровно один виртуальный поток
- в любой момент времени виртуальный поток выполняется не более чем одним потоком-носителем