5

Racket には素晴らしいread-bytes-async!関数があり、これは世界中の他のすべてのプログラミング言語に存在すると私は信じています。ブロックせずに、入力ストリームから可能なものをバッファーに読み取り、書き込まれたバイト数を返します。

この機能は、たとえば Unix ツールを効率的に実装するために絶対に必要な機能のように思えcatますが、Chicken Scheme にはそのような機能が欠けているようです。もちろん、 と を使用できます(read-byte)(write-byte)、これは遅く、CPU をすべて使い果たします。

その(copy-port)ような実装はないようです。代わりに、ストリームが閉じられる前に、バッファーがいっぱいになった場合にのみ、データがバッファーごとにコピーされます。これは、(copy-port (current-input-port) (current-output-port))がまったく動作しないことを意味catします。

ドキュメンテーションを読む際の恐ろしい盲点に苦しんでいるだけですか、それとも Chicken には驚くほどそのような機能が実際に欠けているのでしょうか? catChickenで効率的に書くことさえできないのですか?

4

2 に答える 2

2

あなたが言ったように、posixユニットが鍵ですが、あなたの質問には、 set-buffering-modeがより関連していると思われます!

これはどのポートにも当てはまります。

于 2013-11-01T23:47:32.837 に答える