That is, assuming that the views of the buffer have distinct offsets so the read/write operations within those views can not overlap. Brya
> On May 14, 2014, at 6:06 AM, Peter Firmstone <j...@zeus.net.au> wrote: > > Hmm, it already does that, I wonder if this is safe for direct ByteBuffer's? > > Visibility is one issue, the second is mutual exclusion. I think mutual > exclusion is ok, not sure about visibility. > >> On 14/05/2014 8:01 PM, Peter Firmstone wrote: >> Actually an alternative could be to use future send for all transfers, >> except for eof, which can be safely used for async send since the byte >> buffer doesn't change after eof. >> >>> On 14/05/2014 7:55 PM, Peter Firmstone wrote: >>> There are two methods of transfer, one, future send, where the original >>> thread waits to be notified that the receiving thread has finished >>> processing the ByteBuffer, this appears to be safely transferred. This is >>> for server mode. >>> >>> Then there is async send, this is for client mode, here the calling thread >>> doesn't wait for the receiving thread. >>> >>> Have a look in com.sun.jini.jeri.internal.mux.Session, here the >>> OutputStream uses a ByteBuffer which it shares via async send. >>> >>> I think the answer is to defensively copy the async send ByteBuffer. >>> >>> >>> >>> >>> >>>> On 14/05/2014 7:14 PM, Patricia Shanahan wrote: >>>> ByteBuffer is a subclass of Buffer, whose documentation says, under >>>> "Thread Safety", "Buffers are not safe for use by multiple concurrent >>>> threads. If a buffer is to be used by more than one thread then access to >>>> the buffer should be controlled by appropriate synchronization." >>>> >>>> Is access controlled by appropriate synchronization? How are the buffers >>>> communicated between the threads? >>>> >>>> Patricia >>>> >>>>> On 5/14/2014 2:03 AM, Peter Firmstone wrote: >>>>> One of the things I like about JERI is it's multiplexing and >>>>> multithreaded. >>>>> >>>>> What I don't like about JERI is, it passes ByteBuffers between calling >>>>> threads and pool threads. >>>>> >>>>> Who can guess what's wrong with that? >>>>> >>>>> Peter. >