This happens all the time in parallel applications, even with ROMIO at the moment.
Only one instance must be created. Everyone must then get the right handle. When a handle is returned, it must be ready to be used for I/O.