首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >windows线程池和CLR线程池有什么区别?

windows线程池和CLR线程池有什么区别?
EN

Stack Overflow用户
提问于 2014-07-12 12:49:13
回答 1查看 1.9K关注 0票数 9

我读了一些关于窗口线程池的片段。它看起来像CLR线程池。

CLR是基于Windows的,所以CLR线程是基于windows线程池的,对吗?

我知道每个.net进程都有一个线程池,windows线程池的情况如何?操作系统有一个线程池还是多个线程池?

在C#中,开发人员可以通过代码控制窗口线程池吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-12 14:16:32

这是那些没有直接答案的CLR实现问题之一。不应由CLR来确定ThreadPool是如何实现的。这是CLR主机的工作。将CLR与操作系统集成的一层软件。CLR用来完成线程池操作的核心接口是IHostThreadPoolManager。它是一个非托管COM接口,但是您将很容易识别到与ThreadPool类成员的几乎一对一的映射。

CLR主机有许多实现。更容易识别的是由mscoree.dll实现的桌面应用程序的默认CLR主机。对于不同的Windows版本,有不同的版本。以及ASP.NET、Server、Visual宿主进程、Silverlight、Windows、XBox的自定义主机。而较难识别的是,大型非托管应用程序可以承载CLR本身,以支持用.NET语言实现的脚本编写。像AutoCAD等的计算机辅助设计程序是标准的例子。

线程的核心概念在CLR中虚拟化。IClrTask和IClrTaskManager是这方面的托管接口。它允许主机在操作系统线程之外的其他东西上实现线程。像纤维一样。实际上没人会这么做。

当然,Windows有自己的线程池api。CreateThreadPool() winapi函数得到球滚动。但是,在我的机器上使用dumpbin.exe /imports查看dumpbin.exe文件时,我没有看到它正在被使用。至少部分问题可能是CreateThreadPool()是一个更晚的winapi函数,只有在Vista之后才可用。XP和早期Windows版本的实现要简单得多。所以,不是,至少对于桌面版本的.NET 4.5.2,Windows线程池似乎不相关。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24713090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档