2016-12-13 3 views
3

私は数年前(2008年)からこのビデオを見ました。そこではJoe ArmstrongがErlangの背景を説明しています。 video link は、彼はかなりのケースを作り、私が求めています作品は、彼が13:07でこれを言うときである:Erlang並行性とコア管理

同時言語[アーランがあります]。つまり、その言語は のプロセスがプログラミング言語の一部であることを意味しています。オペレーティングシステムには は属していません。それは実際にはJavaとC++のような言語では間違っています スレッドはプログラミングではありません 言語;スレッドはオペレーティングシステム にあるもので、OSにあるすべての問題を継承します。 問題の一つは...

メモリ管理システムの細かさであり、彼はスレッド管理とどのようにそれは言語とOSの間のこの切断に関係の問題についてに行きます。そして、Erlangはマルチコア技術を利用して、つまりスレッドをまったく使用せずにコアを直接管理できるというユニークな立場にあると言います。あるいは、彼が間違っていることを理解していたのでしょうか、あるいはこの分野でErlangに挑戦するために過去8年間に1つ以上の新しい言語が生まれたでしょうか?

この問題について光を当てる可能性のある参照やコメントをありがとうございました。

+0

あなたが締めくくった部分は見たことがありませんが、おそらくErlangプログラムはマルチコアシステムを非常にうまく利用できることを意味します。プログラマに見えるスレッドはありません。 Erlang自体は、コアを最大限に活用するためにスレッドを使用する必要があります。 – Reith

答えて

2

Erlang VMは、OSスレッド(デフォルトでCPUコアあたり1つ)を生成し、プロセススケジューラを実行します。 (VMはIO操作、ドライバ、およびNIF用のスレッドをさらに生成できますが、Erlangコードは実行しません)。スケジューラはErlangプロセスでコードの実行をスケジュールします。 Erlangの各プロセスは、OSプロセスやOSスレッドに比べて非常に軽量であり、また、そうでなければならず、互いに完全に分離されています。これにより、マルチコアHWを使用して、簡単で安全で頑丈で優雅なアプリケーションのユニークな設計が可能になります。 Erlangのコアへのマッピングの詳細については、my answerを参照してください。スケジューリングの詳細については、Erlang Scheduler Details and Why It Mattersブログを参照してください。

+0

あなたはScala、Go、Closureのような他の言語との違いを話すことができますか?__VMがOSスレッド(CPUコアごとに1つ)を生成すると言うと、これはScala、Go、Closureでコアをどのように扱うかと似ていますか? – kristeraxel

関連する問題