1.我知道一个io完成端口可以关联多个文件,但一个文件可不可以和多个io完成端口关联呢,当对这个文件异步操作完成的时候会不会向多个io完成端口同时发送完成信息。
2.一个文件可不可以和同一个io完成端口关联多次,每次的CompletionKey不同。如果可以关联,当异步操作完成时,会向io完成端口发送多个完成信息吗?

解决方案 »

  1.   

    理论上讲是可行的,即在创建与客户端连接时绑定到不同的完成端口内核对象上。但如果每一个连接都绑定一个新的完成端口上也是不经济的,因为那样就意味着会为每一个连接创建一个工作线程,想想如果有成千上万个连接的时候,线程切换都会是很大的负担,反而不能体现IOCP的性能优势了。
    个人觉得如果想用这种方式解决线程的同步,是不太可取的。还是管理好线程比创建完成更多的完成端口有效。