-
Notifications
You must be signed in to change notification settings - Fork 4.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[mono] Portable threadpool does not support async IO eg ThreadPoolBoundHandle on Windows #34582
Comments
Tagging @carlossanlop as an area owner |
@MaximLipnin this is because Mono corelib is not built with |
@danmosemsft Thanks for clarification, but please correct me if I'm wrong - a quick search shows that this flag is activated in Mono's SPC |
The portable thread pool implementation currently doesn't support runtime/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems Lines 1807 to 1810 in 893882f
I guess IO completion stuff may need to be added to the portable implementation on Windows to make |
This is correct. Could the tests be guarded with IsBindHandleSupported instead of Windows only or is the BindHandle support something your team can fix? I know @jkotas would like to use portable TP for CoreCLR too and this could be a blocker. |
Adding implementation for IO completion stuff (ie To understand the priority: Is Mono going to ship as officially supported on Windows for .NET 5? |
It's not high on our priority list to support IO completion stuff anywhere (including Windows) |
I am interested in this too as it helps us understand what to do about these mono-on-Windows bugs. My assumption is that there is value in getting this test pass clean, regardless. cc @steveisok |
Libraries rely on this API in order to create an IO completion ports. This is necessary for any of our async IO implementations to work on Windows. I agree with @jkotas here: if you care about running mono on Windows I wouldn't leave this as throwing. |
One option to consider is to use Windows OS built-in threadpool that comes with IO completion port support. It is what CoreRT does: https://github.com/dotnet/corert/blob/master/src/System.Private.CoreLib/src/System/Threading/ThreadPool.Windows.cs . It comes with trade-offs, e.g. Windows OS built-in threadpool has different heuristics. |
Moving to 7.0.0 |
@kouvel, any plans to actually implement support in portable thread pool so we can get this working on Mono? |
Yes I'm planning on adding support for BindHandle in the portable thread pool soon. |
They were disabled against dotnet#34582 which was fixed by dotnet#64834
A lot of
System.IO.Pipes.Tests
fail withSystem.PlatformNotSupportedException : This API is specific to the way in which Windows handles asynchronous I/O, and is not supported on this platform.
on windows.The example of the output:
The whole namespace will be marked with
ActiveIssue
in #32592The text was updated successfully, but these errors were encountered: