Just use a pipe. Part of the std lib. 

> On Nov 21, 2019, at 9:47 PM, Marcin Romaszewicz <marc...@gmail.com> wrote:
> 
> 
> Hi All,
> 
> Before I reinvent the wheel, and because this wheel is particularly tricky to 
> get right, I was wondering if anyone was aware of a a library providing 
> something like this
> 
> - conforms to io.Reader
> - conforms to io.Writer
> - Contains a buffer of fixed size, say, 64MB. If you try to write when the 
> buffer is too full, write blocks. When you try to read from an empty one, 
> read blocks.
> 
> This describes the behavior of make(chan byte, 64 * MB), however, it doesn't 
> seem to be efficient to do this with a channel. Say I'm transferring a few 
> hundred GB via this mechanism. A chan of byte would need a few hundred 
> billion byte writes, and a few hundred billion reads. Doesn't sound like it 
> could be efficient at all. You can't implement this with a channel of []byte, 
> because you'd violate your buffering limit if you pass too large of a byte 
> array, so you'd have to chop things up into blocks, but maybe that's simpler 
> than a full fledged blocking ring buffer.
> 
> Anyhow, I've implemented such things in various OS level plumbing, so I know 
> I can do it in Go much more easily, just hoping to avoid it :)
> 
> Thanks for any advice,
> -- Marcin
> -- 
> You received this message because you are subscribed to the Google Groups 
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to golang-nuts+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/golang-nuts/CA%2Bv29LsvbVU1oxBYz6wKO50-xNVPQ6-wRa7Dvhq4uY%3Du-FKigA%40mail.gmail.com.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/B9251FAA-9774-4306-A356-A88F54441980%40ix.netcom.com.

Reply via email to