100のμ Sによって分離された1000回の非同期usleep
コールオフ火災以下の例は、次にjoin
ING前ブロックメインスレッド:解決済みのAwaitableの実行順序は、Hackでよく定義されていますか?
<?hh
$awaitable = HH\Asio\v((new Vector(range(1, 1000)))->map((int $wait_time) ==> {
return async {
await HH\Asio\usleep($wait_time*100);
echo $wait_time."\n";
};
}));
usleep(1000000);
HH\Asio\join($awaitable);
The result in stdout (3v4l)はasync
スコープに戻す制御順序を示しています。
プログラムは、一貫して終了Awaitables
が一旦スレッドがLIFO順に解放され、スタックにプッシュとポップされることを示唆し、1000〜1まで単調減少シーケンスを吐き出します。この注文は本当ですか、私はそれに頼ることができますか?
これは、パフォーマンス上の理由のためのコードであるが、言語仕様はそれについて何も言わない。 –
これに頼らないでください。これは意図的に指定されていないので、前に変更することができます。 –