@@ -10,7 +10,8 @@ include:
1010Ruby 3.1 で導入されました。
1111
1212[ c: String ] を経由せずにメモリ領域を扱えるため、コピーを避けた入出力
13- (zero-copy IO)を実現するために使われます。主に [ c:Fiber::Scheduler] の
13+ (zero-copy IO)を実現するために使われます。主に
14+ [ Fiber::Scheduler] ( https://docs.ruby-lang.org/en/4.0/Fiber/Scheduler.html ) の
1415実装のような、低レベルな入出力を扱う場面で利用します。
1516
1617バッファは以下のいずれかの方法で確保されたメモリ領域を指します。
@@ -78,7 +79,8 @@ OS のページサイズをバイト数で表した値です。
7879バッファがロックされていることを表すフラグです。
7980
8081ロックされている間はバッファの解放やリサイズができません。
81- [ m:IO::Buffer#locked] を参照してください。
82+ バッファがロックされているかどうかは [ m:IO::Buffer#locked?] で調べられます。
83+ #@# locked を収録したら、ブロックの間ロックする IO::Buffer#locked への言及も足す
8284
8385### const PRIVATE -> Integer
8486
@@ -118,7 +120,7 @@ p IO::Buffer::HOST_ENDIAN == IO::Buffer::LITTLE_ENDIAN # => true
118120size バイトの、0 で埋められた新しいバッファを作成して返します。
119121
120122既定では内部(internal)バッファ、すなわち Ruby が直接確保したメモリ領域に
121- なります。ただし size が OS 依存の [ m:IO::Buffer::PAGE_SIZE] より大きい場合は 、
123+ なります。ただし size が OS 依存の [ m:IO::Buffer::PAGE_SIZE] 以上の場合は 、
122124仮想メモリ機構(Unix では匿名 mmap、Windows では VirtualAlloc)を用いて
123125確保されます。flags に [ m:IO::Buffer::MAPPED] を指定すると、
124126size によらず後者の方法で確保されます。
@@ -299,7 +301,8 @@ p buf.get_string # => "\x00AA\x00"
299301変更後の大きさによっては、メモリ領域が別の場所に確保しなおされ、
300302内容がそこへコピーされます。
301303
302- [ m:IO::Buffer.for] で作った外部バッファや、ロックされたバッファは大きさを変更できません。
304+ #@# for を収録したらリンクに戻す
305+ ` IO::Buffer.for ` で作った外部バッファや、ロックされたバッファは大きさを変更できません。
303306
304307- ** param** ` size ` -- 変更後の大きさをバイト数で指定します。
305308- ** raise** ` IO::Buffer::AccessError ` -- 大きさを変更できないバッファに対して呼び出した場合に発生します。
@@ -374,8 +377,9 @@ p buf.size # => 4
374377
375378バッファの大きさが 0 の場合に true を返します。
376379
380+ #@# for を収録したらリンクに戻す
377381大きさ 0 のバッファは、[ m:IO::Buffer.new] に 0 を渡すか、
378- 空文字列から [ m: IO::Buffer.for] で作った場合などにできます。
382+ 空文字列から ` IO::Buffer.for ` で作った場合などにできます。
379383
380384``` ruby
381385p IO ::Buffer .new (0 ).empty? # => true
@@ -426,7 +430,8 @@ p IO::Buffer.new(4).internal? # => true
426430バッファが外部(external)バッファである場合に true を返します。
427431
428432外部バッファは、バッファ自身が確保・マップしたのではないメモリ領域を参照します。
429- [ m:IO::Buffer.for] で作ったバッファは、文字列のメモリを外部参照します。
433+ #@# for を収録したらリンクに戻す
434+ ` IO::Buffer.for ` で作ったバッファは、文字列のメモリを外部参照します。
430435外部バッファは大きさを変更できません。
431436
432437``` ruby
@@ -440,9 +445,10 @@ p IO::Buffer.new(4).external? # => false
440445
441446バッファが読み取り専用の場合に true を返します。
442447
443- 読み取り専用のバッファは、[ m:IO::Buffer#set_value] や [ m:IO::Buffer#set_string] 、
448+ #@# set_value / for を収録したらリンクに戻す
449+ 読み取り専用のバッファは、` IO::Buffer#set_value ` や [ m:IO::Buffer#set_string] 、
444450[ m:IO::Buffer#copy] などで変更できません。
445- [ m: IO::Buffer.for] で作ったバッファや、読み取り専用のファイルから作ったバッファが
451+ ` IO::Buffer.for ` で作ったバッファや、読み取り専用のファイルから作ったバッファが
446452これにあたります。
447453
448454``` ruby
@@ -457,7 +463,8 @@ p IO::Buffer.new(4).readonly? # => false
457463マップバッファは、仮想メモリ機構でマップされたメモリ領域を参照します。
458464[ m:IO::Buffer.new] に [ m:IO::Buffer::MAPPED] を指定した場合や、
459465大きさが [ m:IO::Buffer::PAGE_SIZE] 以上の場合は匿名のマップになります。
460- [ m:IO::Buffer.map] で作った場合はファイルに紐づいたマップになります。
466+ #@# map を収録したらリンクに戻す
467+ ` IO::Buffer.map ` で作った場合はファイルに紐づいたマップになります。
461468
462469### def locked? -> bool
463470
0 commit comments