Does calling named_mutex::remove() have consistent cross-platform behaviour? The reason I ask is that I am trying to use a named mutex for an "I'm the only process" check. That is, the process takes a shared lock on the named mutex (at start up), then, at points within the program, it attempts to get an exclusive lock in order to perform the check/actions. When finished, the mutex is returned to a shared lock. The problem is, if a process dies in some unforeseen manner - and does not get to call named_mutex::remove() - the named_mutex is left orphaned in the system (in a shared lock) such that other processes can never get an exclusive lock. On the Windows platform, I've found I can call named_mutex::remove() at start up, which seems to clean up the named_mutex if it is orphaned, or just do nothing if another, active, process has a lock - exactly the behaviour I require. However, is this platform independent, and a suitable technique?