More missing APIs.
Semaphore.TryOpenExisting().
Actually implement TryOpenExisting().
System.Threading.SemaphoreSlim.WaitAsync().
ThreadLocal track all values.