benchmark expanded to include both one-by-one & batch; close() is now thread-safe