On Mon, Jun 30, 2014 at 11:52 AM, Fedor Indutny <[email protected]> wrote:
> How does it break bump allocation? You just bump the pointer and give the
> old value to uv_read(), right?
With uv_read_start(), the alloc_cb usually gets called right before
the read_cb. You can (ab)use that fact to implement a slab allocator,
where you return a large slice in your alloc_cb, then shrink it to fit
in your read_cb. In pseudo-code:
def alloc_cb():
buf = slab.used
slab.used += 65536
return buf
def read_cb(buf, nread):
slab.used -= len(buf) - nread
With the proposed uv_read(), you have to commit the memory upfront.
That makes a slab allocator much less effective because concurrent
read requests will fragment the slab.
--
You received this message because you are subscribed to the Google Groups
"libuv" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/libuv.
For more options, visit https://groups.google.com/d/optout.