@ledsun blog

無味の味は佳境に入らざればすなわち知れず

2020-04-01から1ヶ月間の記事一覧

Ractor.recvの代わりにRactor.selectする

RactorはsendされたメッセージをRactor.recvで受け取ります。 Ractor.selectでも受け取れます。 例えば、次の例です。 r = Ractor.new do # message = Ractor.recv と同じ _, message = Ractor.select self p "Hello #{message}!" end r.send 'World' r.take…

歌うRactor

Ractorで歌ってみましょう。 歌う部分はRactorは関係ありません。出落ちです。 Ractor内で、spawnしたプロセスをメインスレッドでkillできるか確認します。 非同期なspawn関数をRactor内で実行する必要があるのかは知りません。 完成形 LYRICS =<

Ractor間のメッセージ送受信 Pull型とPush型

やることは前回と同じです。Ractorの構成を組み替えてみました。 Pull型とPush型 Ractorのメッセージ送受信にはPull型とPush型があります。 前回、メインスレッド(?)でRactorインスタンスをselectしてイベントを待ちました。Pull型です。 Pull型 今回、描…

Ractorを使ったTUIプログラムの一歩

前回のユーザー入力とクロックを両方待つプログラムを少し改造します。 Enter以外の入力を受け取る カーソルを移動せずに書き換える 後者はRactorは関係ないです。 Enter以外の入力を受け取る 任意の1文字を受け取るためにSTDIN.getchを使いたいです。 STDIN…

Ractorを試す 改訂版

macOS で https://github.com/ko1/ruby/tree/ractor のソースコードをビルドする方法を改善しました。 インストール先 コンパイルしたRubyをmake installしたら「PCの環境が壊れるかも」とビビっていたところ、 id:hanachin さんに ./configure --prefix="$H…

Ractorをつかうプログラムの練習 2つのイベントを待つ

Ractorをつかって、ユーザー入力とクロックを両方待つプログラムを書いてみます。 練習中であり、Ractorを使ったイケているソースコードではありません。 次のプログラムを実装します。 1秒毎にカウントアップします。 ユーザーがEnterキーを押したらカウン…

Ractorを使ってプログラムを書く練習    

注意:Ractorならではとか、計算効率の良さとか考えていません。 1から10までを足す # 最終結果送り先のRactor CR = Ractor.current r = Ractor.new { CR << Ractor.recv } 1.upto(10) do |i| # 数を足すRactorを作ってポインタを置き換える r = Ractor.new(…

Ractorを試す

Ruby3 さみっと online - connpass を見ていました。 Ractorの発表を見て使ってみたくなったので環境を整えてみます。 ビルドする https://github.com/ko1/ruby/tree/ractor のソースコードをビルドします。 git clone git@github.com:ko1/ruby.git ractor c…

自宅作業環境の整備

新型コロナウイルスの影響で在宅勤務しています。 3月3日から、少しずつ作業環境を整備しています。 ノイズキャンセリングヘッドホン オフィス作業時代に、作業集中用に使っていたものをそのまま使っています。 オンラインミーティングしている相手の声が聞…