Even in a single process and with a normal diskfile it can be useful to have the file open multiple times (on different fd) e.g. to read it at one position and write it at another position without having to seek between te positions all the time. (a single fd has a single read/write position)
This can be done in the same thread or in different threads in the same process. Having threads in the process can be another reason to want to open it several times, so you don't have to needlessly interlock the threads to share the access to the file. (e.g. when one thread reads and another thread writes the same file at a different position)