Submit Search
Upload
コルーチンの実装について
•
3 likes
•
3,331 views
T
Taku Miyakawa
Follow
コルーチンの実装、特にコンテキストスイッチをどう実現するのか?について解説します。
Read less
Read more
Technology
Report
Share
Report
Share
1 of 13
Download now
Download to read offline
Recommended
言語設計者が意味論を書くときに考えていたこと
言語設計者が意味論を書くときに考えていたこと
Taku Miyakawa
Kotlinこんなん出ましたけど
Kotlinこんなん出ましたけど
yy yank
KuromojiをKotlinで動かす
KuromojiをKotlinで動かす
yy yank
Kotlinのwebフレームワーク探訪
Kotlinのwebフレームワーク探訪
豊明 尾古
Kotlinソースコード探訪
Kotlinソースコード探訪
yy yank
Kotlin as an AltJS
Kotlin as an AltJS
Shinya Mochida
Kotlinメジャーver リリースを前に
Kotlinメジャーver リリースを前に
yy yank
KotlinでWebアプリ開発
KotlinでWebアプリ開発
Ryo Nakagawa
Recommended
言語設計者が意味論を書くときに考えていたこと
言語設計者が意味論を書くときに考えていたこと
Taku Miyakawa
Kotlinこんなん出ましたけど
Kotlinこんなん出ましたけど
yy yank
KuromojiをKotlinで動かす
KuromojiをKotlinで動かす
yy yank
Kotlinのwebフレームワーク探訪
Kotlinのwebフレームワーク探訪
豊明 尾古
Kotlinソースコード探訪
Kotlinソースコード探訪
yy yank
Kotlin as an AltJS
Kotlin as an AltJS
Shinya Mochida
Kotlinメジャーver リリースを前に
Kotlinメジャーver リリースを前に
yy yank
KotlinでWebアプリ開発
KotlinでWebアプリ開発
Ryo Nakagawa
Kotlinあるある言いたい
Kotlinあるある言いたい
yy yank
開発チームにKotlinを導入した話
開発チームにKotlinを導入した話
Hiroshi Kikuchi
Spring boot劇的ビフォーアフター
Spring boot劇的ビフォーアフター
orekyuu
Humble Object Patternな話
Humble Object Patternな話
Hiroto Imoto
なるべくコードを書かないAndroid開発
なるべくコードを書かないAndroid開発
Hiroshi Kikuchi
Middleman Guides & How to Learn
Middleman Guides & How to Learn
Yuya Matsushima
KotlinつかってQiitaクライアント作った時の話
KotlinつかってQiitaクライアント作った時の話
shinnosuke kugimiya
「やっぱり怖かったPerl」In Kichijoji.pm #2
「やっぱり怖かったPerl」In Kichijoji.pm #2
民人 青山
普段C#を使っている僕から見たKotlin
普段C#を使っている僕から見たKotlin
Ryota Murohoshi
どう見る?Class Reference
どう見る?Class Reference
Tadahisa Motooka
Androidの世界を離れて異文化留学してみた
Androidの世界を離れて異文化留学してみた
Hiroshi Kikuchi
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
Taku Miyakawa
コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!
amusementcreators
擬似乱数生成器の評価
擬似乱数生成器の評価
Taku Miyakawa
Kink の宣伝
Kink の宣伝
Taku Miyakawa
Summary of "Hacking", 0x351-0x354
Summary of "Hacking", 0x351-0x354
Taku Miyakawa
Matrix Multiplication in Strassen Algorithm
Matrix Multiplication in Strassen Algorithm
Taku Miyakawa
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
Taku Miyakawa
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
Taku Miyakawa
Hadoop jobbuilder
Hadoop jobbuilder
Taku Miyakawa
Quasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on Java
Taku Miyakawa
金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API
Taku Miyakawa
More Related Content
What's hot
Kotlinあるある言いたい
Kotlinあるある言いたい
yy yank
開発チームにKotlinを導入した話
開発チームにKotlinを導入した話
Hiroshi Kikuchi
Spring boot劇的ビフォーアフター
Spring boot劇的ビフォーアフター
orekyuu
Humble Object Patternな話
Humble Object Patternな話
Hiroto Imoto
なるべくコードを書かないAndroid開発
なるべくコードを書かないAndroid開発
Hiroshi Kikuchi
Middleman Guides & How to Learn
Middleman Guides & How to Learn
Yuya Matsushima
KotlinつかってQiitaクライアント作った時の話
KotlinつかってQiitaクライアント作った時の話
shinnosuke kugimiya
「やっぱり怖かったPerl」In Kichijoji.pm #2
「やっぱり怖かったPerl」In Kichijoji.pm #2
民人 青山
普段C#を使っている僕から見たKotlin
普段C#を使っている僕から見たKotlin
Ryota Murohoshi
どう見る?Class Reference
どう見る?Class Reference
Tadahisa Motooka
Androidの世界を離れて異文化留学してみた
Androidの世界を離れて異文化留学してみた
Hiroshi Kikuchi
What's hot
(11)
Kotlinあるある言いたい
Kotlinあるある言いたい
開発チームにKotlinを導入した話
開発チームにKotlinを導入した話
Spring boot劇的ビフォーアフター
Spring boot劇的ビフォーアフター
Humble Object Patternな話
Humble Object Patternな話
なるべくコードを書かないAndroid開発
なるべくコードを書かないAndroid開発
Middleman Guides & How to Learn
Middleman Guides & How to Learn
KotlinつかってQiitaクライアント作った時の話
KotlinつかってQiitaクライアント作った時の話
「やっぱり怖かったPerl」In Kichijoji.pm #2
「やっぱり怖かったPerl」In Kichijoji.pm #2
普段C#を使っている僕から見たKotlin
普段C#を使っている僕から見たKotlin
どう見る?Class Reference
どう見る?Class Reference
Androidの世界を離れて異文化留学してみた
Androidの世界を離れて異文化留学してみた
Viewers also liked
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
Taku Miyakawa
コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!
amusementcreators
擬似乱数生成器の評価
擬似乱数生成器の評価
Taku Miyakawa
Kink の宣伝
Kink の宣伝
Taku Miyakawa
Summary of "Hacking", 0x351-0x354
Summary of "Hacking", 0x351-0x354
Taku Miyakawa
Matrix Multiplication in Strassen Algorithm
Matrix Multiplication in Strassen Algorithm
Taku Miyakawa
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
Taku Miyakawa
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
Taku Miyakawa
Hadoop jobbuilder
Hadoop jobbuilder
Taku Miyakawa
Quasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on Java
Taku Miyakawa
金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API
Taku Miyakawa
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Yuji Kubota
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Taku Miyakawa
Prepare for Java 9 #jjug
Prepare for Java 9 #jjug
Yuji Kubota
楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug
Yuji Kubota
Graph Algorithms Part 1
Graph Algorithms Part 1
Taku Miyakawa
Viewers also liked
(16)
Java SE 9の紹介: モジュール・システムを中心に
Java SE 9の紹介: モジュール・システムを中心に
コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!
擬似乱数生成器の評価
擬似乱数生成器の評価
Kink の宣伝
Kink の宣伝
Summary of "Hacking", 0x351-0x354
Summary of "Hacking", 0x351-0x354
Matrix Multiplication in Strassen Algorithm
Matrix Multiplication in Strassen Algorithm
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
Kink: プロトタイプベースの俺々 JVM 言語
Kink: プロトタイプベースの俺々 JVM 言語
Hadoop jobbuilder
Hadoop jobbuilder
Quasar: Actor Model and Light Weight Threads on Java
Quasar: Actor Model and Light Weight Threads on Java
金勘定のためのBigDecimalそしてMoney and Currency API
金勘定のためのBigDecimalそしてMoney and Currency API
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Garbage First Garbage Collection (G1 GC) #jjug_ccc #ccc_cd6
Javaのログ出力: 道具と考え方
Javaのログ出力: 道具と考え方
Prepare for Java 9 #jjug
Prepare for Java 9 #jjug
楽して JVM を学びたい #jjug
楽して JVM を学びたい #jjug
Graph Algorithms Part 1
Graph Algorithms Part 1
Similar to コルーチンの実装について
Non blocking and asynchronous
Non blocking and asynchronous
Norio Kobota
Nodeにしましょう
Nodeにしましょう
Yuzo Hebishima
120418 tokyo node5_lin_qonnodejs
120418 tokyo node5_lin_qonnodejs
Takayoshi Tanaka
Jenkins実践入門 第二版 What's New
Jenkins実践入門 第二版 What's New
Masanori Satoh
14対話bot発表資料
14対話bot発表資料
Keiichirou Miyamoto
東京Node学園 今できる通信高速化にトライしてみた
東京Node学園 今できる通信高速化にトライしてみた
Yoshiki Shibukawa
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
R S
Ruby 勉強会 第42回 発表資料 IO について
Ruby 勉強会 第42回 発表資料 IO について
Tomoya Kawanishi
Fuchsia概略その1
Fuchsia概略その1
l_b__
サムネイルを作る話
サムネイルを作る話
Ikuru Kanuma
PlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.key
泰 増田
関西 Java エンジニアの会 2012年6月度 JavaOne 報告会!
関西 Java エンジニアの会 2012年6月度 JavaOne 報告会!
Kazkuki Oakamoto
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawler
Takuro Sasaki
Kubernetes 初心者の僕からの JKD 参加報告
Kubernetes 初心者の僕からの JKD 参加報告
Kentaro NOMURA
Play ja 3_update
Play ja 3_update
Takafumi Ikeda
jupyter notebook (jupyterhub) で ruby とグラフ
jupyter notebook (jupyterhub) で ruby とグラフ
Koichi Shimozono
LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)
Masataka Kondo
はじめてのCF buildpack
はじめてのCF buildpack
Kazuto Kusama
Keycloak で SSO #渋谷java
Keycloak で SSO #渋谷java
Yoshimasa Tanabe
Ruby on cygwin (2019/8月号)
Ruby on cygwin (2019/8月号)
fd0
Similar to コルーチンの実装について
(20)
Non blocking and asynchronous
Non blocking and asynchronous
Nodeにしましょう
Nodeにしましょう
120418 tokyo node5_lin_qonnodejs
120418 tokyo node5_lin_qonnodejs
Jenkins実践入門 第二版 What's New
Jenkins実践入門 第二版 What's New
14対話bot発表資料
14対話bot発表資料
東京Node学園 今できる通信高速化にトライしてみた
東京Node学園 今できる通信高速化にトライしてみた
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
GitLab から GitHub + CircleCI に乗り換えてチーム運用を改善しつつある話
Ruby 勉強会 第42回 発表資料 IO について
Ruby 勉強会 第42回 発表資料 IO について
Fuchsia概略その1
Fuchsia概略その1
サムネイルを作る話
サムネイルを作る話
PlaySQLAlchemyORM2017.key
PlaySQLAlchemyORM2017.key
関西 Java エンジニアの会 2012年6月度 JavaOne 報告会!
関西 Java エンジニアの会 2012年6月度 JavaOne 報告会!
Rubyで作るクローラー Ruby crawler
Rubyで作るクローラー Ruby crawler
Kubernetes 初心者の僕からの JKD 参加報告
Kubernetes 初心者の僕からの JKD 参加報告
Play ja 3_update
Play ja 3_update
jupyter notebook (jupyterhub) で ruby とグラフ
jupyter notebook (jupyterhub) で ruby とグラフ
LibreOfficeをビルドしてみよう(Windows)
LibreOfficeをビルドしてみよう(Windows)
はじめてのCF buildpack
はじめてのCF buildpack
Keycloak で SSO #渋谷java
Keycloak で SSO #渋谷java
Ruby on cygwin (2019/8月号)
Ruby on cygwin (2019/8月号)
More from Taku Miyakawa
ラムダと invokedynamic の蜜月
ラムダと invokedynamic の蜜月
Taku Miyakawa
Java Quine Golf
Java Quine Golf
Taku Miyakawa
Processing LTSV by Apache Pig
Processing LTSV by Apache Pig
Taku Miyakawa
Java 7 invokedynamic の概要
Java 7 invokedynamic の概要
Taku Miyakawa
Java オブジェクトの内部構造
Java オブジェクトの内部構造
Taku Miyakawa
Kink: developing a programming language on the JVM
Kink: developing a programming language on the JVM
Taku Miyakawa
More from Taku Miyakawa
(6)
ラムダと invokedynamic の蜜月
ラムダと invokedynamic の蜜月
Java Quine Golf
Java Quine Golf
Processing LTSV by Apache Pig
Processing LTSV by Apache Pig
Java 7 invokedynamic の概要
Java 7 invokedynamic の概要
Java オブジェクトの内部構造
Java オブジェクトの内部構造
Kink: developing a programming language on the JVM
Kink: developing a programming language on the JVM
コルーチンの実装について
1.
@miyakawa_taku JJUG幹事
SI屋で賃労働 オレオレJVM言語Kinkを作っています https://bitbucket.org/kink/kink 尾上部屋の里山関のファンです 自己紹介 1/12
2.
Kinkとは! こんなの↓ プロトタイプベースのオブジェクト指向 言語 JVM上で動く言語処理系だ!
仕様策定者: 宮川 拓 実装者: 宮川 拓 ユーザ: 宮川 拓 2/12
3.
Clojureのcoroutine-based core-async についての質問が分からん! と言われたので説明します 3/12
4.
コルーチンの実装について 2014-04-18 渋谷JVM LT 宮川
拓 4/12
5.
参考文献 Resumable Funtions v2
http://www.open- std.org/jtc1/sc22/wg21/docs/papers/20 14/n4134.pdf C++の仕様化プロセスの文書 コルーチン周りの話題を網羅 特に読みやすくはない 5/12
6.
コルーチン? カーネルのスケジューラの外で 実現するスレッド Goのgoroutine, Erlangの「プロセス」など
100万とかの数が作れる 6/12
7.
Q1 コルーチンの中でメソッドを呼び出して、 その先でチャネルの読み書きをしたとき、 コンテキストスイッチはされる? 7/12
8.
コンテキストスイッチ coroutine { do_x() your_chan.send(v1) do_y() v2 =
my_chan.recv() do_z() } 8/12
9.
コンテキストスイッチ 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
10.
コンテキストスイッチ coroutine { do_something() } function do_something()
{ your_chan.send(v) } ←こいつは変換 できるけど ←こいつは変換 できない! 10/12
11.
やりよう次第 例外を駆使すれば呼び出し先での コンテキストスイッチも可能 例: Quasar http://www.slideshare.net/miyakawatak u/quasar-actor-model-and-light-weight- threads-on-java 11/12
12.
Q2 コルーチンの中でのIOはどうしよう? 12/12
13.
IOはブロックするのだ! 普通のIOはカーネルでブロックします ブロックすると、独自のコンテキストス イッチの仕組みは動きません なので、コルーチンと組み合わせられる IOライブラリがあると便利です QuasarやN4134にはある 13/12
Download now