Nonblocking data structures on persistent memory