Tag: iocp

等待IO的可重用测试代码

我正在尝试在WCF公开的方法/服务上使用async / await。 一切正常,但我想模拟实际等待IO的服务方法,以便服务调用将注册到IO完成端口,并将线程放回线程池。 为了澄清,我只是在尝试确认IO完成端口的使用,并更好地理解实际发生的机制。 所以我的测试服务目前看起来像这样: [ServiceContract] public interface IHelloWorldService { [OperationContract] Task SayHello(string firstName, string lastName); } public class HelloWorldService : IHelloWorldService { public async Task SayHello(string firstName, string lastName) { string str = string.Format(“Hello {0} {1}”, firstName, lastName); return await Task.Factory.StartNew(() => str); } } 我想在SayHello()中做一些事情来使代码等待一些IO,理想情况下我可以复制/粘贴的代码模式通常在我想模拟等待IO时使用。 通常,Thread.Sleep()用于模拟长时间运行的任务,但我很确定这会使线程池线程进入hibernate状态而不会触发IO完成端口的使用。

Mono和C#IOCP:这是个好主意吗?

我正在将c ++应用程序移植到在其服务器上使用IOCP的c#。 单声道处理IOCP以及Windows吗? 我会得到与c ++相当的性能,或者我应该尝试别的吗? 谢谢

在哪里/如何找到.net类是否使用IOCP?

更新 我问错了问题,改写(根据答案和评论的重要信息): 在.net的异步操作是真正的异步,有没有任何好的来源,因此IOCP或异步(重叠)? 有没有快速的方法来确定几个类是否这样做? 不盲信任框架开发人员的示例 创建FileStream的自然起点是静态File.Open()方法,该文档没有提及创建的FileStream的同步性! 它也不允许您提供FileOptions(用于指定魔术FileOptions.Asynchronous标志)。 而是使用FileOptions.None创建FileStream。 任何异步操作都是由Stream基类的强制实现悄然伪造的,它只是将相应的同步方法包装在委托中,并使用BeginInvoke()方法在线程池上调用它。 这偏离了通常的“成功之坑”设计理念,即.NET中的所有内容似乎都能按照您的想法运行,而无需仔细阅读文档和/或逐渐发现模糊的捕获和陷阱。 我一直在尝试查找有关在.NET使用IO完成端口的信息。 有没有什么好方法可以知道给定的.NET类是否正在使用IO完成端口 ? (每次使用新类时都不必运行某些测试。 我尝试了msdn文档的一些类和方法,我找不到任何东西。 更好的是,如果有一些列表,其中包含使用IOCP的类列表。