Javaではスレッドが緑色であるため、Erlangプロセスは「緑色」ではありません。Erlangプロセスはメモリを共有しない構造であり、ErlangVMによって維持されます。
奇妙に聞こえるかもしれませんが、この論文は「古い」可能性があります(2007年のバイオですが)。ランタイムキューのまったく新しい処理(動的バランシングやその他の機能を使用)を取得したとき、R13リリースの前後ですべてが変更されました。これは、UlfWigerによるそれに関するプレゼンテーションですhttp://ulf.wiger.net/weblog/2009/01/23/erlang-programming-for-multicore/
要約すると、プロセスは完全に透過的であり、ランタイムキューとスケジューラの数を調整できますが、OSの実現は損なわれていません。なぜスレッドが11個あるのか推測したくありません。
編集:私はOSについて少し間違っています:
+S Schedulers:SchedulerOnline
SMPサポートが有効になっている場合に、作成するスケジューラスレッドとオンラインで設定するスケジューラスレッドの数を設定します。
両方の値の有効な範囲は1〜1024です。Erlangランタイムシステムが構成された論理プロセッサーと使用可能な論理プロセッサーの量を判別できる場合、スケジューラーはデフォルトで構成された論理プロセッサーになり、SchedulersOnline
デフォルトで使用可能な論理プロセッサーになります。それ以外の場合、デフォルト値は1になります。そうでない場合:SchedulerOnline
はスケジューラーを省略でき、その逆も可能です。オンラインのスケジューラーの数は、実行時にを介して変更できますerlang:system_flag(schedulers_online, SchedulersOnline)
。
..。
エミュレータでSMPサポートが有効になっていない場合、このフラグは無視されます(-smp
フラグを参照)。
ここから:http ://www.erlang.org/doc/man/erl.html
EDIT2:多くのVMと多くのスケジューラーの長所と短所に関するerlang-questionメーリングリストに関する興味深い議論。残念ながら、これも2008年のものであり、新しいOTPリリースの大幅な改善により有効にならない可能性があります。http://www.erlang.org/cgi-bin/ezmlm-cgi?4:mss:38165:200809:nbihpkepgjcfnffkoobf