オーディオコールバック
次のバッファを埋める必要が生じるたびにオーディオドライバが呼び出す関数で、決して遅れてはならないもの。
ASIOやCore Audio、JACK、Web Audioなど、ほぼすべてのオーディオAPIが同じモデルを採っている。プログラムが関数を登録しておくと、ドライバが優先度の高いスレッドから、毎秒千回近くその関数を呼び出す。渡されるのは空のバッファで、関数が戻るまでに満たさなければならない。64サンプル・48 kHzの場合、使える時間はおよそ1.3ミリ秒である。
そこで、Ross Bencinaが2011年に「時間は誰も待ってくれない」という趣旨で整理した規則が生まれた。メモリ確保、ロック、ファイルやネットワークのI/O、ブロックしうるシステムコールはいずれも禁止である。mallocは普通は速いが、常にではない。その「常にではない」がクリック音として聞こえてしまう。プログラムの他の部分との連携は、ロックフリーのキューを介して行う。ガベージコレクション言語がこの分野で苦戦するのも同じ理由による。