狠狠撸

狠狠撸Share a Scribd company logo
Ruby3 is comming
Ractor編
株式会社エクストーン 豊田陽一
Ractor
? Ruby3で導入される並列処理
? 3.0ではexperimental扱い
? 今年Guildから名前が変更
? Data raceが起こらないような設計
? スレッドセーフとか考えなくてもいい
Ractorの生成
? Ractor.newで生成
? 渡したブロックが並行実行される
Ractor.new do
# このブロックが並行に実行される
end
環境の隔離
? Ractor間ではオブジェクトが共有され
ない
? 外部の変数を参照すると例外が起こる
? Proc#isolateを利用
obj = "hoge"
Ractor.new do
# Ractor生成時に例外発生
puts obj
end
引数経由で値を渡す
? 値のコピーが渡される
obj = "hoge"
puts obj.object_id
Ractor.new obj do |local_obj|
# Ractor外のobjと異なるobject_id
puts local_obj.object_id
end
引数経由で値を渡す (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
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にメッセージ送信
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
デモ
まとめ
? Ractor
? Ruby3からの並列処理のライブラリ
? まだexperimental
? 並列処理楽しい

More Related Content

More from Yoichi Toyota (20)

超フランクにスクラムの大事なことの话をする
超フランクにスクラムの大事なことの话をする超フランクにスクラムの大事なことの话をする
超フランクにスクラムの大事なことの话をする
Yoichi Toyota
?
シ?ャワカレーをおいしく作る最后の一押し
シ?ャワカレーをおいしく作る最后の一押しシ?ャワカレーをおいしく作る最后の一押し
シ?ャワカレーをおいしく作る最后の一押し
Yoichi Toyota
?
ライブラリを作る思考回路
ライブラリを作る思考回路ライブラリを作る思考回路
ライブラリを作る思考回路
Yoichi Toyota
?
顿测苍补尘辞顿叠设计のちょっとした技
顿测苍补尘辞顿叠设计のちょっとした技顿测苍补尘辞顿叠设计のちょっとした技
顿测苍补尘辞顿叠设计のちょっとした技
Yoichi Toyota
?
はじめての顿测苍补尘辞顿叠スキーマ设计
はじめての顿测苍补尘辞顿叠スキーマ设计はじめての顿测苍补尘辞顿叠スキーマ设计
はじめての顿测苍补尘辞顿叠スキーマ设计
Yoichi Toyota
?
オブジェクト指向についてあまり知られていないこと
オブジェクト指向についてあまり知られていないことオブジェクト指向についてあまり知られていないこと
オブジェクト指向についてあまり知られていないこと
Yoichi Toyota
?
补谤谤补测.尘补辫(&补尘辫;:办别测)ってなんやねん
补谤谤补测.尘补辫(&补尘辫;:办别测)ってなんやねん补谤谤补测.尘补辫(&补尘辫;:办别测)ってなんやねん
补谤谤补测.尘补辫(&补尘辫;:办别测)ってなんやねん
Yoichi Toyota
?
はじめてのPull Request
はじめてのPull RequestはじめてのPull Request
はじめてのPull Request
Yoichi Toyota
?
搁补颈濒蝉の开発环境作るぞ
搁补颈濒蝉の开発环境作るぞ搁补颈濒蝉の开発环境作るぞ
搁补颈濒蝉の开発环境作るぞ
Yoichi Toyota
?
箩辩で极めるシェル芸の话
箩辩で极めるシェル芸の话箩辩で极めるシェル芸の话
箩辩で极めるシェル芸の话
Yoichi Toyota
?
足し算をつくろう
足し算をつくろう足し算をつくろう
足し算をつくろう
Yoichi Toyota
?
React Hooksでカスタムフックをつくろう
React HooksでカスタムフックをつくろうReact Hooksでカスタムフックをつくろう
React Hooksでカスタムフックをつくろう
Yoichi Toyota
?
础肠迟颈辞苍颁补产濒别のクライアントは搁补颈濒蝉外から利用できるのか
础肠迟颈辞苍颁补产濒别のクライアントは搁补颈濒蝉外から利用できるのか础肠迟颈辞苍颁补产濒别のクライアントは搁补颈濒蝉外から利用できるのか
础肠迟颈辞苍颁补产濒别のクライアントは搁补颈濒蝉外から利用できるのか
Yoichi Toyota
?
サーバーレスアプリケーションの作り方
サーバーレスアプリケーションの作り方サーバーレスアプリケーションの作り方
サーバーレスアプリケーションの作り方
Yoichi Toyota
?
厂笔础时代の翱骋笔との戦い方
厂笔础时代の翱骋笔との戦い方厂笔础时代の翱骋笔との戦い方
厂笔础时代の翱骋笔との戦い方
Yoichi Toyota
?
AWS WAFでらくらくファイアーウォール生活
AWS WAFでらくらくファイアーウォール生活AWS WAFでらくらくファイアーウォール生活
AWS WAFでらくらくファイアーウォール生活
Yoichi Toyota
?
Docker in production
Docker in productionDocker in production
Docker in production
Yoichi Toyota
?
How to fight against “full scratch disease”
How to fight against  “full scratch disease”How to fight against  “full scratch disease”
How to fight against “full scratch disease”
Yoichi Toyota
?
Amazon lexを触ってみた
Amazon lexを触ってみたAmazon lexを触ってみた
Amazon lexを触ってみた
Yoichi Toyota
?
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーンForkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
Yoichi Toyota
?
超フランクにスクラムの大事なことの话をする
超フランクにスクラムの大事なことの话をする超フランクにスクラムの大事なことの话をする
超フランクにスクラムの大事なことの话をする
Yoichi Toyota
?
シ?ャワカレーをおいしく作る最后の一押し
シ?ャワカレーをおいしく作る最后の一押しシ?ャワカレーをおいしく作る最后の一押し
シ?ャワカレーをおいしく作る最后の一押し
Yoichi Toyota
?
ライブラリを作る思考回路
ライブラリを作る思考回路ライブラリを作る思考回路
ライブラリを作る思考回路
Yoichi Toyota
?
顿测苍补尘辞顿叠设计のちょっとした技
顿测苍补尘辞顿叠设计のちょっとした技顿测苍补尘辞顿叠设计のちょっとした技
顿测苍补尘辞顿叠设计のちょっとした技
Yoichi Toyota
?
はじめての顿测苍补尘辞顿叠スキーマ设计
はじめての顿测苍补尘辞顿叠スキーマ设计はじめての顿测苍补尘辞顿叠スキーマ设计
はじめての顿测苍补尘辞顿叠スキーマ设计
Yoichi Toyota
?
オブジェクト指向についてあまり知られていないこと
オブジェクト指向についてあまり知られていないことオブジェクト指向についてあまり知られていないこと
オブジェクト指向についてあまり知られていないこと
Yoichi Toyota
?
补谤谤补测.尘补辫(&补尘辫;:办别测)ってなんやねん
补谤谤补测.尘补辫(&补尘辫;:办别测)ってなんやねん补谤谤补测.尘补辫(&补尘辫;:办别测)ってなんやねん
补谤谤补测.尘补辫(&补尘辫;:办别测)ってなんやねん
Yoichi Toyota
?
はじめてのPull Request
はじめてのPull RequestはじめてのPull Request
はじめてのPull Request
Yoichi Toyota
?
搁补颈濒蝉の开発环境作るぞ
搁补颈濒蝉の开発环境作るぞ搁补颈濒蝉の开発环境作るぞ
搁补颈濒蝉の开発环境作るぞ
Yoichi Toyota
?
箩辩で极めるシェル芸の话
箩辩で极めるシェル芸の话箩辩で极めるシェル芸の话
箩辩で极めるシェル芸の话
Yoichi Toyota
?
足し算をつくろう
足し算をつくろう足し算をつくろう
足し算をつくろう
Yoichi Toyota
?
React Hooksでカスタムフックをつくろう
React HooksでカスタムフックをつくろうReact Hooksでカスタムフックをつくろう
React Hooksでカスタムフックをつくろう
Yoichi Toyota
?
础肠迟颈辞苍颁补产濒别のクライアントは搁补颈濒蝉外から利用できるのか
础肠迟颈辞苍颁补产濒别のクライアントは搁补颈濒蝉外から利用できるのか础肠迟颈辞苍颁补产濒别のクライアントは搁补颈濒蝉外から利用できるのか
础肠迟颈辞苍颁补产濒别のクライアントは搁补颈濒蝉外から利用できるのか
Yoichi Toyota
?
サーバーレスアプリケーションの作り方
サーバーレスアプリケーションの作り方サーバーレスアプリケーションの作り方
サーバーレスアプリケーションの作り方
Yoichi Toyota
?
厂笔础时代の翱骋笔との戦い方
厂笔础时代の翱骋笔との戦い方厂笔础时代の翱骋笔との戦い方
厂笔础时代の翱骋笔との戦い方
Yoichi Toyota
?
AWS WAFでらくらくファイアーウォール生活
AWS WAFでらくらくファイアーウォール生活AWS WAFでらくらくファイアーウォール生活
AWS WAFでらくらくファイアーウォール生活
Yoichi Toyota
?
How to fight against “full scratch disease”
How to fight against  “full scratch disease”How to fight against  “full scratch disease”
How to fight against “full scratch disease”
Yoichi Toyota
?
Amazon lexを触ってみた
Amazon lexを触ってみたAmazon lexを触ってみた
Amazon lexを触ってみた
Yoichi Toyota
?
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーンForkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
Forkwell Meetup #3 Productivity Engineering スポンサーLT - 株式会社エクストーン
Yoichi Toyota
?

Ruby is comming ractor編