Writes are implemented using a lock it would be possible to make writes lock free (or lock free when resizing doesn't occur), but it adds complexity. If we were to go that route, it would make sense to create a fully generic lock free set, which would be much more involved to implement and validate than this simple class, and might also offer somewhat worse read perf. Lock free containers that support item removal either need additional synchronization overhead on readers, so writers can tell if a reader is active and spin, or need graveyard markers and a garbage collection pass called periodically, which makes it no longer a simple standalone container.