Thread safety check of MemorySegment

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Wed Jul 22 09:51:34 UTC 2020


On 22/07/2020 00:44, Johannes Lichtenberger wrote:
> So, it likely will not be part of Java 15, right?
Right.
>
> I'm running into the same problem, when I'm sharing a transaction 
> (only one thread ever accesses it) with another thread and the other 
> thread closes the transaction. Same problem with the segment 
> close()-method.

Are you too also using mapped segments? Or just plain native segments 
allocated with MemorySegment::allocateNative?

Thanks
Maurizio

>
> kind regards
> Johannes
>
> Am Mi., 22. Juli 2020 um 01:24 Uhr schrieb Maurizio Cimadamore 
> <maurizio.cimadamore at oracle.com <mailto:maurizio.cimadamore at oracle.com>>:
>
>
>     On 21/07/2020 22:51, NekoCaffeine wrote:
>     >>
>     https://gist.github.com/mcimadamore/128ee904157bb6c729a10596e69edffd
>     > This is a great example.
>     >
>     >> The *right* solution from an API perspective is to find a way
>     to disable confinement in a way that works
>     > I very much agree with this point, which is exactly what I want
>     to express.
>     >
>     > So from a design rather than implementation perspective, should
>     I expect a new way to disable thread checking or should I use
>     CustomMappedSegment?
>
>     So the crux of the issue here is that there's no Runnable that will
>     unmap a given mapped address. But such a Runnable can be
>     implemented in
>     several ways:
>
>     * with plain JNI
>     * using the ForeignLinker API (although that is not part of JDK 15
>     - but
>     is available in the Panama repo)
>     * going all in and re-implement mapped segment (similar to what I've
>     done with CustomMappedSegment)
>
>     I think from an API perspective, if we manage to solve the
>     confinement
>     problem, then I expect the memory segment API will have an extra
>     method
>     to either turn a confined segment into an unconfined one, or
>     vice-versa.
>     So you will be able to just create your mapped segment using
>     mapFromPath
>     and then just 'share' it (and make it unconfined).
>
>     Hope this helps.
>
>     Maurizio
>
>     >
>     > Thanks,
>     >
>     > NekoCaffeine
>


More information about the panama-dev mailing list