AsyncCounter
Represents a synchronization primitive that is signaled when its count becomes non zero.
Gets the counter value.
Initializes a new asynchronous counter.
Increments counter and resume suspended callers.
Suspends caller if Value is zero
or just decrements it.