> > > A pthread_rwlock would work, but it would be the first use in Git. I > > > think we'd need to find an equivalent for compat/win32/pthread.h. > > > > These[1][2] seems to be the equivalent options on Windows. I'll have > > to read these docs more carefully, but [2] seems to be more > > interesting in terms of speed. Also, the extra features of [1] are not > > really needed for our use case here. > > > > [1]: https://docs.microsoft.com/en-us/windows-hardware/drivers/kernel/reader-writer-spin-locks > > [2]: https://docs.microsoft.com/en-us/windows/win32/sync/slim-reader-writer--srw--locks > > Yeah, looks like it, but I don't have any expertise there (nor a Windows > system to test on). One thing to note is that that if we do this, we'll be having one rwlock per pack window. I couldn't find out what the Windows limits were, but it seems that pthreads does not mandate having no limit [1]: > Defining symbols for the maximum number of mutexes and condition > variables was considered but rejected because the number of these > objects may change dynamically. Furthermore, many implementations > place these objects into application memory; thus, there is no > explicit maximum. [1] https://linux.die.net/man/3/pthread_mutex_init