Bereits seit einigen Monaten bietet Hack mit dem async-genannten Feature genau diese Möglichkeit. Dabei wird immer nur eine Sektion gleichzeitig ausgeführt, wodurch etwa Lock-Contention-Issues, wie sie häufig beim Multithreading vorkommen, vermieden werden.
Async im Praxiseinsatz
Async und die dazugehörigen Strukturen await, WaitHandle und Awaitable bieten vielerlei Einsatzmöglichkeiten. Besonders interessant wird es allerdings, wenn Code nicht nur der Reihe nach ausgeführt, sondern zusätzlich Code blockiert werden soll. So bietet async besonders viele Vorteile, wenn verschiedene awaitable-Ressourcen miteinander kombiniert werden sollen.
Wie der Einsatz von async in der Praxis aussehen kann, beschreibt Sara Golemon ausführlich und mit zahlreichen Code-Beispielen im HHVM-Blog. Derzeit befindet sich das Feature noch in der aktiven Entwicklung und soll mit HHVM 3.5.0 ausgerollt werden. Laut Release-Plan ist der Release der nächsten HHVM-Version für Januar 2015 vorgesehen; wer nicht mehr so lange warten möchte, kann die async-Features auch mit dem Nightly-Build ausprobieren.