並行計算
Alice – Standard ML に Future による並行性サポート機能を追加したもの
CDL (Concurrent Description Language) – machine translatable(機械的に変換可能)、構成可能、オブジェクト指向、ビジュアルプログラミング言語。
ChucK – 音響関連専用のプログラミング言語
Cilk – 並行版C言語
Clojure – LISP系の言語、JVM上で動作する。
Concurrent C
Concurrent Clean – 関数型言語。Haskellに近い。
Concurrent Pascal – by Per Brinch Hansen
Corn
Curry
Cω – C オメガ。C#に非同期通信を追加した研究用言語。
E – Future機能使用。デッドロックを発生させない。
Eiffel – 契約プログラミングに基づいたSCOOP機構による。
Erlang – 共有のない非同期メッセージパッシングを使用。
Janus – 宣言型言語。論理変数などをaskerとtellerに明確に区別する。
Join Java – Javaに基づいた並行プログラミング言語。
並行コンポーネント間の通信には、例えば以下の二通りがある。
ケース1:相互通信の明示的操作を要求する形式
同期傾向になる。明示的操作は特別なプログラム構文を必要にする。ソフトウェアトランザクショナルメモリ、クリティカルセクション同期などのモデルに従っての実装になる。
共有メモリ通信
並行コンポーネントたちは共有メモリの内容を更新することで通信を行う。JavaやC#が用いている。クリティカルセクションを定めてロックオブジェクトを用いての同期でその範囲を並行性制御する。ロック手法にはセマフォ、ミューテックス、モニタ、バリア、読み書きロックなどがある。スレッドセーフが重視されている。
ケース2:相互通信をプログラマから隠蔽する形式
非同期傾向になる。上の明示的操作をコード評価/呼出しやデータ参照/代入といった標準構文でまかなえる。プロセス計算、Futureパターンなどのモデルに従っての実装になる。
メッセージパッシング通信