Submit Search
Upload
Ruby is comming ractor編
•
0 likes
•
274 views
Yoichi Toyota
Follow
Ruby3の目玉の一つであるところのRactorを触ってみたレポートです
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 10
Download now
Download to read offline
Recommended
Swift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposium
Tomohiro Kumagai
AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計
AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計
y_taka_23
基礎構文班 5回目 繰り返し
基礎構文班 5回目 繰り返し
XMLProJ2014
とっとるびー(2回目)発表資料
とっとるびー(2回目)発表資料
ionis111
18166746-NeverBlock-RubyKaigi2009
18166746-NeverBlock-RubyKaigi2009
Muhammad Ali
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
yoshiaki iwanaga
普段Djangoを使っている人間がruby on railsを勉強してみた話
普段Djangoを使っている人間がruby on railsを勉強してみた話
ko ty
Ruby 3.0.0 コネタ集
Ruby 3.0.0 コネタ集
Kazuhiro Nishiyama
Recommended
Swift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposium
Tomohiro Kumagai
AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計
AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計
y_taka_23
基礎構文班 5回目 繰り返し
基礎構文班 5回目 繰り返し
XMLProJ2014
とっとるびー(2回目)発表資料
とっとるびー(2回目)発表資料
ionis111
18166746-NeverBlock-RubyKaigi2009
18166746-NeverBlock-RubyKaigi2009
Muhammad Ali
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
yoshiaki iwanaga
普段Djangoを使っている人間がruby on railsを勉強してみた話
普段Djangoを使っている人間がruby on railsを勉強してみた話
ko ty
Ruby 3.0.0 コネタ集
Ruby 3.0.0 コネタ集
Kazuhiro Nishiyama
超フランクにスクラムの大事なことの話をする
超フランクにスクラムの大事なことの話をする
Yoichi Toyota
ジャワカレーをおいしく作る最後の一押し
ジャワカレーをおいしく作る最後の一押し
Yoichi Toyota
ライブラリを作る思考回路
ライブラリを作る思考回路
Yoichi Toyota
DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技
Yoichi Toyota
はじめてのDynamoDBスキーマ設計
はじめてのDynamoDBスキーマ設計
Yoichi Toyota
オブジェクト指向についてあまり知られていないこと
オブジェクト指向についてあまり知られていないこと
Yoichi Toyota
array.map(&:key)ってなんやねん
array.map(&:key)ってなんやねん
Yoichi Toyota
はじめてのPull Request
はじめてのPull Request
Yoichi Toyota
Railsの開発環境作るぞ
Railsの開発環境作るぞ
Yoichi Toyota
jqで極めるシェル芸の話
jqで極めるシェル芸の話
Yoichi Toyota
足し算をつくろう
足し算をつくろう
Yoichi Toyota
React Hooksでカスタムフックをつくろう
React Hooksでカスタムフックをつくろう
Yoichi Toyota
ActionCableのクライアントはRails外から利用できるのか
ActionCableのクライアントはRails外から利用できるのか
Yoichi Toyota
サーバーレスアプリケーションの作り方
サーバーレスアプリケーションの作り方
Yoichi Toyota
SPA時代のOGPとの戦い方
SPA時代のOGPとの戦い方
Yoichi Toyota
AWS WAFでらくらくファイアーウォール生活
AWS WAFでらくらくファイアーウォール生活
Yoichi Toyota
Docker in production
Docker in production
Yoichi Toyota
How to fight against “full scratch disease”
How to fight against “full scratch disease”
Yoichi Toyota
Amazon lexを触ってみた
Amazon lexを触ってみた
Yoichi Toyota
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
Yoichi Toyota
More Related Content
More from Yoichi Toyota
超フランクにスクラムの大事なことの話をする
超フランクにスクラムの大事なことの話をする
Yoichi Toyota
ジャワカレーをおいしく作る最後の一押し
ジャワカレーをおいしく作る最後の一押し
Yoichi Toyota
ライブラリを作る思考回路
ライブラリを作る思考回路
Yoichi Toyota
DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技
Yoichi Toyota
はじめてのDynamoDBスキーマ設計
はじめてのDynamoDBスキーマ設計
Yoichi Toyota
オブジェクト指向についてあまり知られていないこと
オブジェクト指向についてあまり知られていないこと
Yoichi Toyota
array.map(&:key)ってなんやねん
array.map(&:key)ってなんやねん
Yoichi Toyota
はじめてのPull Request
はじめてのPull Request
Yoichi Toyota
Railsの開発環境作るぞ
Railsの開発環境作るぞ
Yoichi Toyota
jqで極めるシェル芸の話
jqで極めるシェル芸の話
Yoichi Toyota
足し算をつくろう
足し算をつくろう
Yoichi Toyota
React Hooksでカスタムフックをつくろう
React Hooksでカスタムフックをつくろう
Yoichi Toyota
ActionCableのクライアントはRails外から利用できるのか
ActionCableのクライアントはRails外から利用できるのか
Yoichi Toyota
サーバーレスアプリケーションの作り方
サーバーレスアプリケーションの作り方
Yoichi Toyota
SPA時代のOGPとの戦い方
SPA時代のOGPとの戦い方
Yoichi Toyota
AWS WAFでらくらくファイアーウォール生活
AWS WAFでらくらくファイアーウォール生活
Yoichi Toyota
Docker in production
Docker in production
Yoichi Toyota
How to fight against “full scratch disease”
How to fight against “full scratch disease”
Yoichi Toyota
Amazon lexを触ってみた
Amazon lexを触ってみた
Yoichi Toyota
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
Yoichi Toyota
More from Yoichi Toyota
(20)
超フランクにスクラムの大事なことの話をする
超フランクにスクラムの大事なことの話をする
ジャワカレーをおいしく作る最後の一押し
ジャワカレーをおいしく作る最後の一押し
ライブラリを作る思考回路
ライブラリを作る思考回路
DynamoDB設計のちょっとした技
DynamoDB設計のちょっとした技
はじめてのDynamoDBスキーマ設計
はじめてのDynamoDBスキーマ設計
オブジェクト指向についてあまり知られていないこと
オブジェクト指向についてあまり知られていないこと
array.map(&:key)ってなんやねん
array.map(&:key)ってなんやねん
はじめてのPull Request
はじめてのPull Request
Railsの開発環境作るぞ
Railsの開発環境作るぞ
jqで極めるシェル芸の話
jqで極めるシェル芸の話
足し算をつくろう
足し算をつくろう
React Hooksでカスタムフックをつくろう
React Hooksでカスタムフックをつくろう
ActionCableのクライアントはRails外から利用できるのか
ActionCableのクライアントはRails外から利用できるのか
サーバーレスアプリケーションの作り方
サーバーレスアプリケーションの作り方
SPA時代のOGPとの戦い方
SPA時代のOGPとの戦い方
AWS WAFでらくらくファイアーウォール生活
AWS WAFでらくらくファイアーウォール生活
Docker in production
Docker in production
How to fight against “full scratch disease”
How to fight against “full scratch disease”
Amazon lexを触ってみた
Amazon lexを触ってみた
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
Ruby is comming ractor編
1.
Ruby3 is comming Ractor編 株式会社エクストーン 豊田陽一
2.
Ractor ▰ Ruby3で導入される並列処理 ▰ 3.0ではexperimental扱い ▰
今年Guildから名前が変更 ▰ Data raceが起こらないような設計 ▰ スレッドセーフとか考えなくてもいい
3.
Ractorの生成 ▰ Ractor.newで生成 ▰ 渡したブロックが並行実行される Ractor.new
do # このブロックが並行に実行される end
4.
環境の隔離 ▰ Ractor間ではオブジェクトが共有され ない ▰ 外部の変数を参照すると例外が起こる ▰
Proc#isolateを利用 obj = "hoge" Ractor.new do # Ractor生成時に例外発生 puts obj end
5.
引数経由で値を渡す ▰ 値のコピーが渡される obj =
"hoge" puts obj.object_id Ractor.new obj do |local_obj| # Ractor外のobjと異なるobject_id puts local_obj.object_id end
6.
引数経由で値を渡す (2) ▰ 共有可能な値は実体が渡される ▰
数値・シンボル・frozenな文字列など ▰ クラス・モジュール ▰ Ractor obj = "hoge".freeze puts obj.object_id Ractor.new obj do |local_obj| # Ractor外のobjと異なるobject_id puts local_obj.object_id end
7.
send/recvで値を渡す ▰ push型のRactor間通信 ▰ 送信側が宛先のRactorを知っている obj
= "hoge" puts obj.object_id p1 = Ractor.new do # 値を受け取るまで待つ local_obj = Ractor.recv # コピーされた値を受け取る puts local_obj.object_id end p1.send obj # p1にメッセージ送信
8.
yield/takeで値を渡す ▰ pull型のRactor間通信 ▰ 受信側が送信元を知っている p1
= Ractor.new do local_obj = "hoge" puts local_obj.object_id sleep 5 # 5秒待つ # 受信側にメッセージ送信 Ractor.yield local_obj end # p1からメッセージ受信 (値を受け取るまで待つ ) obj = p1.take puts obj.object_id
9.
デモ
10.
まとめ ▰ Ractor ▰ Ruby3からの並列処理のライブラリ ▰
まだexperimental ▰ 並列処理楽しい
Download now