SlideShare a Scribd company logo
 @miyakawa_taku
 JJUG幹事
 SI屋で賃労働
 オレオレJVM言語Kinkを作っています
https://bitbucket.org/kink/kink
 尾上部屋の里山関のファンです
自己紹介
1/12
Kinkとは!
こんなの↓
 プロトタイプベースのオブジェクト指向
言語
 JVM上で動く言語処理系だ!
 仕様策定者: 宮川 拓
 実装者: 宮川 拓
 ユーザ: 宮川 拓
2/12
Clojureのcoroutine-based core-async
についての質問が分からん!
と言われたので説明します
3/12
コルーチンの実装について
2014-04-18 渋谷JVM LT
宮川 拓
4/12
参考文献
Resumable Funtions v2
 http://www.open-
std.org/jtc1/sc22/wg21/docs/papers/20
14/n4134.pdf
 C++の仕様化プロセスの文書
 コルーチン周りの話題を網羅
 特に読みやすくはない
5/12
コルーチン?
 カーネルのスケジューラの外で
実現するスレッド
 Goのgoroutine,
Erlangの「プロセス」など
 100万とかの数が作れる
6/12
Q1
コルーチンの中でメソッドを呼び出して、
その先でチャネルの読み書きをしたとき、
コンテキストスイッチはされる?
7/12
コンテキストスイッチ
coroutine {
do_x()
your_chan.send(v1)
do_y()
v2 = my_chan.recv()
do_z()
}
8/12
コンテキストスイッチ
implement_coroutine(frame) {
switch (frame.ip) {
0: frame.ip=1, do_x()
return your_chan.send(v1)
1: frame.ip=2, do_y()
return my_chan.recv()
2: v2 = frame.last_result
do_z()
return
}
}
←みたいに変換
されるはず
9/12
コンテキストスイッチ
coroutine {
do_something()
}
function do_something() {
your_chan.send(v)
}
←こいつは変換
できるけど
←こいつは変換
できない!
10/12
やりよう次第
例外を駆使すれば呼び出し先での
コンテキストスイッチも可能
例: Quasar
 http://www.slideshare.net/miyakawatak
u/quasar-actor-model-and-light-weight-
threads-on-java
11/12
Q2
コルーチンの中でのIOはどうしよう?
12/12
IOはブロックするのだ!
普通のIOはカーネルでブロックします
ブロックすると、独自のコンテキストス
イッチの仕組みは動きません
なので、コルーチンと組み合わせられる
IOライブラリがあると便利です
 QuasarやN4134にはある
13/12

More Related Content

What's hot (11)

PDF
Kotlinあるある言いたい
yy yank
 
PPTX
開発チームにKotlinを導入した話
Hiroshi Kikuchi
 
PPTX
Spring boot劇的ビフォーアフター
orekyuu
 
PDF
Humble Object Patternな話
Hiroto Imoto
 
PDF
なるべくコードを書かないAndroid開発
Hiroshi Kikuchi
 
PDF
Middleman Guides & How to Learn
Yuya Matsushima
 
PDF
KotlinつかってQiitaクライアント作った時の話
shinnosuke kugimiya
 
PDF
「やっぱり怖かったPerl」In Kichijoji.pm #2
民人 青山
 
PDF
普段C#を使っている僕から見たKotlin
Ryota Murohoshi
 
KEY
どう見る?Class Reference
Tadahisa Motooka
 
PDF
Androidの世界を離れて異文化留学してみた
Hiroshi Kikuchi
 
Kotlinあるある言いたい
yy yank
 
開発チームにKotlinを導入した話
Hiroshi Kikuchi
 
Spring boot劇的ビフォーアフター
orekyuu
 
Humble Object Patternな話
Hiroto Imoto
 
なるべくコードを書かないAndroid開発
Hiroshi Kikuchi
 
Middleman Guides & How to Learn
Yuya Matsushima
 
KotlinつかってQiitaクライアント作った時の話
shinnosuke kugimiya
 
「やっぱり怖かったPerl」In Kichijoji.pm #2
民人 青山
 
普段C#を使っている僕から見たKotlin
Ryota Murohoshi
 
どう見る?Class Reference
Tadahisa Motooka
 
Androidの世界を離れて異文化留学してみた
Hiroshi Kikuchi
 

Viewers also liked (16)

PDF
Java SE 9の紹介: モジュール・システムを中心に
Taku Miyakawa
 
PDF
コルーチンでC++でも楽々ゲーム作成!
amusementcreators
 
PDF
擬似乱数生成器の評価
Taku Miyakawa
 
PDF
Kink の宣伝
Taku Miyakawa
 
PDF
Summary of "Hacking", 0x351-0x354
Taku Miyakawa
 
PDF
Matrix Multiplication in Strassen Algorithm
Taku Miyakawa
 
PDF
Kink: invokedynamic on a prototype-based language
Taku Miyakawa
 
PDF
Kink: プロトタイプベースの俺々 JVM 言語
Taku Miyakawa
 
PDF
Hadoop jobbuilder
Taku Miyakawa
 
PDF
Quasar: Actor Model and Light Weight Threads on Java
Taku Miyakawa
 
PDF
金勘定のためのBigDecimalそしてMoney and Currency API
Taku Miyakawa
 
PDF
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Yuji Kubota
 
PDF
Javaのログ出力: 道具と考え方
Taku Miyakawa
 
PDF
Prepare for Java 9 #jjug
Yuji Kubota
 
PDF
楽して JVM を学びたい #jjug
Yuji Kubota
 
PDF
Graph Algorithms Part 1
Taku Miyakawa
 
Java SE 9の紹介: モジュール・システムを中心に
Taku Miyakawa
 
コルーチンでC++でも楽々ゲーム作成!
amusementcreators
 
擬似乱数生成器の評価
Taku Miyakawa
 
Kink の宣伝
Taku Miyakawa
 
Summary of "Hacking", 0x351-0x354
Taku Miyakawa
 
Matrix Multiplication in Strassen Algorithm
Taku Miyakawa
 
Kink: invokedynamic on a prototype-based language
Taku Miyakawa
 
Kink: プロトタイプベースの俺々 JVM 言語
Taku Miyakawa
 
Hadoop jobbuilder
Taku Miyakawa
 
Quasar: Actor Model and Light Weight Threads on Java
Taku Miyakawa
 
金勘定のためのBigDecimalそしてMoney and Currency API
Taku Miyakawa
 
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Yuji Kubota
 
Javaのログ出力: 道具と考え方
Taku Miyakawa
 
Prepare for Java 9 #jjug
Yuji Kubota
 
楽して JVM を学びたい #jjug
Yuji Kubota
 
Graph Algorithms Part 1
Taku Miyakawa
 
Ad

More from Taku Miyakawa (6)

PDF
ラムダと invokedynamic の蜜月
Taku Miyakawa
 
PDF
Java Quine Golf
Taku Miyakawa
 
PDF
Processing LTSV by Apache Pig
Taku Miyakawa
 
PDF
Java 7 invokedynamic の概要
Taku Miyakawa
 
PDF
Java オブジェクトの内部構造
Taku Miyakawa
 
PDF
Kink: developing a programming language on the JVM
Taku Miyakawa
 
ラムダと invokedynamic の蜜月
Taku Miyakawa
 
Java Quine Golf
Taku Miyakawa
 
Processing LTSV by Apache Pig
Taku Miyakawa
 
Java 7 invokedynamic の概要
Taku Miyakawa
 
Java オブジェクトの内部構造
Taku Miyakawa
 
Kink: developing a programming language on the JVM
Taku Miyakawa
 
Ad

Recently uploaded (13)

PDF
go tool と Minimal Version Selection アルゴリズム
Keisuke Ishigami
 
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2024_報告会資料_増野さ...
IGDA Japan SIG-Audio
 
PDF
漁船に搭載されている電子装備と漁法について_VRC海洋学研究会_海のLT会発表資料
Yuuitirou528 default
 
PDF
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2025_報告会資料_渡辺さ...
IGDA Japan SIG-Audio
 
PDF
マルチAIエージェントの産業界での実践に向けたオープンソース活動の展望 - Japan Regional User Group (RUG) Meet-Up
Kosaku Kimura
 
PDF
第3回デジタル理学療法学会のシンポジウム「デジタル理学療法の組織活用:教育・管理・研究を繋ぐ新たな地平」での話題提供
Matsushita Laboratory
 
PDF
第3回デジタル理学療法研究会学術大会シンポジウム「デジタル理学療法の組織活用:教育・管理・研究を繋ぐ新たな地平」の講演資料.
Matsushita Laboratory
 
PPTX
オープンソース界隈の利用者や技術者から見たオープンソースEDAとは? What is open source EDA from the perspecti...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
 
PDF
安尾 萌, 森野 穣, 松下 光範. 災害情報収集におけるSNSのメディア特性に関する一検討, 人工知能学会第30回インタラクティブ情報アクセスと可視化マ...
Matsushita Laboratory
 
PPTX
新卒・中途採用者向け採用ピッチ資料2025年7月版(20250702).pptx
Official74
 
PDF
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
Hitachi, Ltd. OSS Solution Center.
 
PDF
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
 
PDF
AIツールを使った研究の効率化 Improving Research Efficiency with AI Tools
Tohoku University
 
go tool と Minimal Version Selection アルゴリズム
Keisuke Ishigami
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2024_報告会資料_増野さ...
IGDA Japan SIG-Audio
 
漁船に搭載されている電子装備と漁法について_VRC海洋学研究会_海のLT会発表資料
Yuuitirou528 default
 
SIG-AUDIO 2025 Vol.02 オンラインセミナー 「GDC2025 オーディオ報告会」SIG-Audio_GDC2025_報告会資料_渡辺さ...
IGDA Japan SIG-Audio
 
マルチAIエージェントの産業界での実践に向けたオープンソース活動の展望 - Japan Regional User Group (RUG) Meet-Up
Kosaku Kimura
 
第3回デジタル理学療法学会のシンポジウム「デジタル理学療法の組織活用:教育・管理・研究を繋ぐ新たな地平」での話題提供
Matsushita Laboratory
 
第3回デジタル理学療法研究会学術大会シンポジウム「デジタル理学療法の組織活用:教育・管理・研究を繋ぐ新たな地平」の講演資料.
Matsushita Laboratory
 
オープンソース界隈の利用者や技術者から見たオープンソースEDAとは? What is open source EDA from the perspecti...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
 
安尾 萌, 森野 穣, 松下 光範. 災害情報収集におけるSNSのメディア特性に関する一検討, 人工知能学会第30回インタラクティブ情報アクセスと可視化マ...
Matsushita Laboratory
 
新卒・中途採用者向け採用ピッチ資料2025年7月版(20250702).pptx
Official74
 
API認可を支えるKeycloakの基本と設計の考え方 ~ OAuth/OIDCによるAPI保護のベストプラクティス ~
Hitachi, Ltd. OSS Solution Center.
 
安尾 萌, 松下 光範. 環境馴致を計量可能にするための試み,人工知能学会第4回仕掛学研究会, 2018.
Matsushita Laboratory
 
AIツールを使った研究の効率化 Improving Research Efficiency with AI Tools
Tohoku University
 

コルーチンの実装について