More concurrency changes...
1) Don't mswait(1) on a successful lock, or when timeout is zero. 2) Flush read buffer on Get and ReLoad() - If there's a single record in the file, close and re-open it. - If a lock is held on a different record already, read that record. - Otherwise, read the first record a lock with timeout zero succeeds. 3) Flush write buffer on Put(). This should now actually be safe as long as locks work. Using file_mutex() on records is the only potential change still needed. (Because POSIX fcntl() locks are insane)
Showing with 74 additions and 5 deletions