Hi there,
I was wondering what sort of thread-safety guarantees does the transactional API give when allocating persistent memory dynamically. Specifically I would like to know what happens if concurrent threads attempt to allocate from the persistent heap with tx_alloc (and not from their thread-exclusive cache, i.e. it's ran out or the allocation exceeds what is available in the cache). The programming persistent memory book doesn't detail if transactional dynamic allocation is thread-safe or not.
So are transactions aborted if multiple threads try to allocate from the heap or will they automatically retry/wait like the normal allocation? I'm creating an STM system on top of pmemobj by extending the transactions, so any guidance is appreciated, thank you.