Is there a non-blocking version of hGetArray?

Simon Marlow simonmar at microsoft.com
Tue Oct 5 06:32:56 EDT 2004


On 02 October 2004 13:04, Tomasz Zielonka wrote:

> On Fri, Oct 01, 2004 at 09:34:36PM +0100, Simon Marlow wrote:
>> 
>> Not currently, but I could probably implement the equivalent
>> (hGetArrayNonBlocking).
> 
> It is perhaps not closely related, but could we also have
> Network.Socket recvFrom / sendTo working on raw buffers?
> 
> I've attached a proposed implementation. It moves most of code to
> recvBufFrom and sendBufTo, and changes recvFrom / sendTo to use the
> *Buf* functions.

Committed, thanks!
 
> It would be nice if these functions could be used to implement
> efficient recvFromArray / sendToArray (without copying), but I don't
> know if it's possible to get the pointer from MutableByteArray. Is
> there a danger that GC invalidates the pointer?

It is possible to get a Ptr from a MutableByteArray, but only if the
array was allocated pinned, and only if you make sure it lives across
any foreign calls (using touch#).  This is how Foreign.alloca works, for
example.

Cheers,
	Simon


More information about the Glasgow-haskell-users mailing list