* make user level allocator thread-safe (not reentrant)
  - allocate & free can be used concurrently