❓ Что такое Fibers в PHP 8.1 и чем они отличаются от async/await в других языках?
Fiber — примитив для кооперативной многозадачности. Позволяет приостановить выполнение функции в произвольной точке через Fiber::suspend() и возобновить позже, передав значение обратно.
Главное отличие от async/await: Fibers не заражают сигнатуры. В JS как только где-то await, вся цепочка выше должна быть async. В PHP Fiber::suspend() можно вызвать на любой глубине стека, не меняя сигнатуры вызывающих функций.
Второе отличие: Fibers это низкоуровневый примитив, event loop в них не встроен. Сами по себе они не дают параллелизма — это строительный блок, поверх которого ReactPHP, Revolt и Amp строят настоящую неблокирующую конкурентность.
Post #1367
1.03K
- 👍 4
- ❤ 2
- 🔥 1