naruse / airemix.jp wrote:
> Benoit Daloze wrote:
> > For me, having a message like:
> > "NotImplementedError: IO.copy_stream with offset is not supported on Windows since it is not atomic"
> > would be a good enough fix for this.
> 
> IO.copy_stream is a utility method.
> It works as expected and fast if there's a suitable API like sendfile.
> 
> On this precondition, IO.copy_stream should work even on Windows.
> You can simply acquire GVL or fine grained lock to achieve multithread safety.

Can open files be shared across processes in Windows?
If so, thread-safety is not enough; pread provides atomicity across
forked processes (and also send_io/recv_io) in *nix; not just threads.

> Anyway you can provide pread with ReadFile.
> You may know, on Windows read() is our own function and the real name is rb_w32_read.
> You can implement rb_w32_pread with ReadFile in win32/win32.c.

Anyways, I'll leave Windows devs to implement if it is possible
and safe :)

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>