- 著者
-
笹田 耕一
松本 行弘
- 雑誌
- 情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
- 巻号頁・発行日
- vol.10, no.3, pp.16-16, 2017-06-16
マルチスレッドプログラミングは,共有するデータに対して,複数のスレッドから同時に読み込み,書き込みを行うとデータレースなどの問題を発生させるため,排他制御などの同期を適切に行わねばならず,難しい.この問題は,スレッドが変更可能なデータを簡単に共有できるため生じるので,そのような共有を制限する方法が必要である.プログラミング言語Rubyの次期メジャーバージョンであるRuby 3では,マルチスレッドプログラミングの持つ難しさを緩和するため,“Guild” というRuby向けの新しい並行実行モデルを検討している.インタプリタは1つ以上のGuildを持つ.変更可能なすべてのオブジェクトはある1つのGuildに所属し,Guild間では,変更可能なオブジェクトを共有しない.ただし,不変オブジェクトや,クラスやモジュールは共有する.Guildは1つ以上のスレッドを持ち,異なるGuildは並列に実行する.Guild間の通信はチャネルを通して行い,変更可能なオブジェクトをGuild間で通信するにはコピーと移籍という2つの方式を提供する.移籍は,所属するGuildを変更する操作であり,単なるコピーより軽量となる.性能などの観点から,変更可能なオブジェクトを共有しなければならない場合,特別なデータ構造を提供することができる.本提案は,既存のアイデアの「いいとこどり」を狙ったものである.本発表では,この並行実行モデルの目論見について議論する.