在Windows下,有两种方法插入工作项以避免创build太多的线程:
方法1:使用IOCP;
手段2:使用QueueUserApc。
然而,手段1比手段2复杂得多。
虚拟内存中NUMA如何表示?
Windows Azure虚拟机在缩放时访问networking速度很慢
我怎么能故意拖慢Windows?
Apache上的HTTPS; 它会减慢Apache吗?
所以我的问题是:手段1相对于手段2的优点是什么?
有很多读者的时候使用pthread_rwlock的效率
如何使OS日程安排磁盘最佳访问?
java性能Windows vs Linux
什么是最快的方式来增加一个C文件在ext4文件系统的Linux文件的大小没有在文件中创build洞?
当你调用QueueUserApc ,你必须定位一个特定的线程。
IOCP具有QueueUserApc缺少的内置线程分派机制,可以让您将线程池中最高效的线程作为目标。 线程调度机制可以自动防止同时运行太多的线程(这会导致额外的上下文切换和额外的争用),或者同时运行的线程太少(这会导致性能下降)。
Windows实际上跟踪运行IOCP作业的线程数量。 它最初设置允许运行的线程数等于机器上虚拟内核的数量。 但是,如果某个线程阻塞了I / O或同步,IOCP端口上阻塞的另一个线程将自动释放,从而避免线程匮乏。
另外,IOCP可以很容易地连接到I / O,以便I / O事件触发在IOCP端口上阻塞的线程分派。 这是在Windows上对大量目标进行I / O操作的最有效的方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。