分周比設定とかがなくて謎。要追試Cレベルではビジーループしてる。うまくCPUスリープさせたいけど、まだよくわかってない。作るのは大変簡単になっていておもてなし感がある。するまで反映されないのが罠ぽかった。永続されてしまうぽい?この件は再現させて1行パッチ送ったらマージされたのでたぶん大丈夫です。作ったらかっこよさそう。「ウェブエンジニアのローレベルプログラミング」という発表をしましたちょっと時間に対して話したいことが多すぎて、各分野での掘り下げが足りなかったとは思いますが、一通り下のほうまで盛りこみました。オブジェクトとかいうハックがあって、スコープを出るタイミングで必ず呼ばれるファイナライザを使って、あるスコープでだけ有効な処理を書けたりします。トランザクションや、あるいは以下のように依存するプロセスをあるスコープでだけ起動して終了するような用途で使われています。同じようなサブルーチンを書くことはできます)。多少妥協する必要があります。複数のブロックのネストをフラットにする上記のように依存プロセスを起動して勝手に終了してほしい、みたいな場合、ドンドコ他のプロセスも増やしていきたくなります。endendドンドコ作るとドンドコネストしまくっていきます。1個増えるたびにいちいち中身全部インデントしなおしていったらダルくて嫌な感じです。使うのがお手軽そうです。endendフラットにはなりましたが、何をやっているのか大変謎になりました。出てきて意味不明ですし、処理が上下にちらばっているのが嫌な感じです。これならネストが増えるほうがマシな感じがします。適当にラップしてみます。以下のようなメソッドを定義します。:in_blockendこれでかなりマシになった気がします。して渡して呼ぶのが好みではないので、以下のように書けたらいいなと思いました。使いにくいのでちょっと面倒です。継続を使って実装することにしました。block_valueendなんかだいぶ長くなりましたが、とりあえずこれで動くようになりました。返してから、最後にまた保存した継続を実行しているだけです。的に、先にブロックを登録しておくとスコープをはずれるときに自動実行するのを実装してみました。インターフェイス的には以下のようになります。1個しか登録できないので、他のところで登録されると壊れるのと、スコープ単位ではなくメソッド単位にしかならないのが微妙なところです。呼べるところで、これのためにブロックをつくる必要がない。的に先にブロックを出たときの処理を登録するだけなら、もっと簡単に以下のように書けます。するメソッドも提供されているので、大抵の場合はこれでもよさそうな気がします。オブジェクトのやりかたは無闇にインデントが増えず、なおかつ関連する処理を近くに配置して確実なコードを書けます。そんなこんなで自分は好きなのですが、簡単にできなそうなので、なんとかしていい感じにやる方法を考えてみました。ラップして使うのがよさそう、あるいはもっと別の方法を考えたほうがよさそうです。継続を使う方法が一番カッコいいと思いますが、予期せぬことがありそうなので、できれば組込みクラスでやったほうがいいですね。なにかもっといい方法があれば教えてください。