我阅读了一些关于窗口线程池的内容。它看起来像CLR线程池。
CLR基于Windows,所以CLR线程是基于Windows线程池的,对吗?
我知道每个 .net 进程都有一个线程池,那么Windows线程池的情况如何?操作系统有一个线程池还是多个线程池?
在C#中,开发人员能通过代码控制Windows线程池吗?
我阅读了一些关于窗口线程池的内容。它看起来像CLR线程池。
CLR基于Windows,所以CLR线程是基于Windows线程池的,对吗?
我知道每个 .net 进程都有一个线程池,那么Windows线程池的情况如何?操作系统有一个线程池还是多个线程池?
在C#中,开发人员能通过代码控制Windows线程池吗?
线程的核心概念在CLR中进行了虚拟化。IClrTask和IClrTaskManager是托管这一概念的接口,使得主机可以在除操作系统线程之外的其他地方实现线程,如纤程(fiber)。不过实际上几乎没有人这样做。
当然,Windows有自己的线程池API。CreateThreadPool() WinAPI函数可以启动此功能。然而,在我的计算机上使用dumpbin.exe /imports查看mscor*.dll文件时,并没有发现它被使用。至少部分问题可能是CreateThreadPool()是后来的WinAPI函数,只能在Vista及更高版本中使用。XP及早期的Windows版本有一个简单得多的实现。因此,在桌面版.NET 4.5.2中,似乎并没有使用Windows线程池。