http://www.erlang.org/doc/man/gen_tcp.html#accept-1から:
accept 呼び出しは、ソケット所有者プロセスから発行する必要がないことに注意してください。バージョン 5.5.3 以降のエミュレーターを使用すると、複数の同時受け入れ呼び出しを異なるプロセスから発行できます。これにより、着信接続を処理する受け入れプロセスのプールが可能になります。
(Q1) Erlang でUnicornスタイルの負荷分散ができるということですか?
(Q2)もしそうなら、この機能を利用している既存のサーバーやライブラリはありますか?
(Q3) Unicorn は、リクエスト処理が速いことを前提に動作します。同じ仮定の下で、Erlang でアクセプターとワーカーを組み合わせることでパフォーマンスを向上させることは可能ですか?
Unicorn に慣れていない方のために説明すると、Unicorn は従来の UNIX プレフォーク Web サーバーです。ワーカー プロセス間の負荷分散は、OS カーネルによって行われます。すべてのワーカーは共通のリスナー ソケットのセットを共有し、ノンブロッキングの accept() を実行します。カーネルは、ソケットを与えるワーカー プロセスを決定し、accept() するものがない場合、ワーカーはスリープします。単一のリスナーソケットの場合、ワーカープロセスがaccept()をブロックし、OSカーネルが「レース」の結果を決定する場合も同じだと思います。