在Unix上的Core CLR中调用和重叠I / O?

时间:2017-08-22 03:27:11

标签: linux async-await .net-core

我知道.Net Core可以在Mac和Unix上运行。

Win32类如overlapped I/O会发生什么?I/O request packet如何转换成Unix?

如果我正确理解,那些win32类和结构是async / await的{​​{3}}和P / Invoke I / O指令。

1 个答案:

答案 0 :(得分:2)

CoreCLR实现了一个平台抽象层,它使用适当的异步I / O操作系统功能来处理实现。例如,在支持kevent的平台(例如FreeBSD和macOS)上,它们将使用kqueue进行排队和引发I / O回调。这是众多领域中的一个,但是开始理解CoreCLR并将其与托管实现联系起来的好地方。

https://github.com/dotnet/coreclr/blob/dd1e7ab81221127e47d59052c51c09921007d607/src/pal/src/synchmgr/synchmanager.cpp#L2103