Stephen Cleary
Stephen Cleary
@sjb-sjb No; it does not depend on a thread pool thread being free in order to release.
Historically, `SemaphoreSlim` did not support asynchronous operations at the time `AsyncLock` was written. I'm not sure if `SemaphoreSlim` supports them on all the AsyncEx platforms today. But even if it...
@jesuissur Bumping the min-threads is one option, and some v5 users are using that as a workaround for now.
@jesuissur That depends on your application type and server. I'd recommend getting the minimum threads first and then increasing it.
The problem isn't that `Task.Wait` needs a thread pool thread. The problem is that `TaskCompletionSource.TrySetResult` executes end-user callbacks (continuations) synchronously, and I call it while holding a lock. To prevent...
Ah, I see now. That is an interesting approach! I'll take this into consideration.
@ygoe: I've never tried. There's `ThreadPool.GetAvailableThreads`, but it has unclear semantics - is the value the number of currently available threads, or the number of threads that can be created...
I've been working on a few different experiments related to this issue. During my travelling for OSCON, I thought it would be useful to write out the background and context...
@ygoe Yes, I have considered releasing a stable version with this as a known bug. The perfectionist in me doesn't like that, but commercial software does it all the time....
Thanks for that use case @qstarin. I did de-prioritize this for quite a while due to concerns that fixing this wouldn't actually fix the underlying issue. Specifically, if your code...