是什么的AppDomain,大会,过程和螺纹差,并且线程
差,并且线程
回答
一个AppDomain之间的差是一个过程内的隔离单元。 AppDomain可以在运行时创建,加载代码并卸载。它的设计使.NET应用程序更加可靠。
程序集包含一个或多个保存已编译的代码块的模块。您通常会将程序集看作.EXE或.DLL。
一个进程是一个正在执行的应用程序(waaaay过于简化)。
线程是一个执行上下文。操作系统在一个线程内执行代码。操作系统在线程之间切换,允许每个线程依次执行,从而给人以多个应用程序同时运行的印象。
为了把它放在一起(非常简化的)...
执行程序。一个进程由操作系统创建,在其单线程中它开始加载要执行的代码。在.NET应用程序中,CLR创建一个AppDomain。应用程序的执行程序集(.EXE)加载到此AppDomain中并开始执行。应用程序可以产生新的进程,创建AppDomain,将其他程序集加载到这些域中,然后创建新的线程以在任何这些AppDomain中执行代码。
CLR的JIT编译器最大的优点之一是它可以防止进程的虚拟地址空间重叠。例如,如果生成进程1并且CLR(MScorEE.dll)正在管理该进程中托管程序集(.exe或.dll)的执行,那么JIT编译器将确保分配给此的虚拟地址空间进程不会与其他相邻进程冲突或重叠。有了这个优势,现在可以重复使用单个进程来执行多个托管代码!每个托管代码执行都将拥有自己的AppDomain,并且超过AppDomain可以成为单个进程的一部分。这是IIS和SQL Server所使用的(单进程,多AppDomain)。
程序集是一个抽象术语,表示托管代码的单个可重用组件。程序集由元数据(PE32或PE32 +头+ IL头)和IL指令组成。 CLR的JIT编译器根据处理器及其体系结构(x86或x64)编译并将IL的汇编转换为特定于计算机的指令集。
进程是OS用来促进程序执行的。进程是程序的“RAM表示”,其地址空间由堆栈,堆,静态和代码区组成。每个进程都有一个与之关联的唯一进程ID。
线程是一个轻量级的过程。一个进程至少有一个线程(即主线程),并且取决于并行性,OS可以在单个进程内创建多个线程,并在其中创建上下文切换以支持更快的程序执行。线程可以共享进程内的一些内存区域。
- 1. rxjava - 获取响应并且并行插入差异
- 2. 天气API不加载并且线程继续暂停
- 3. 运行安装mod_dav_svn并且不能破译线程错误
- 4. 当窗口关闭时,您将如何停止线程,并且
- 5. OS多线程差异
- 6. D3插值线曲线非常复杂并且自身翻倍
- 7. 差异,使并发程序
- 8. 误解单线程和多线程编程之间的差异
- 9. 线程并行
- 10. 线程,为什么1000个线程和2000个线程没有明显差异
- 11. 并行线程和并发
- 12. Java的多线程,让线程并行
- 13. 如何resuse线程 - 并行线程ç
- 14. 并行线程:取消阻塞线程
- 15. 如果我将工作发布到线程池并且线程已在boost工作,会发生什么情况?
- 16. Windows窗体运行带有对话框(窗体)的新线程并且主线程拥有对话框
- 17. 并发多线程
- 18. C#线程并行
- 19. CUDA并行线程
- 20. Asp.Net:executionTimeout +并行线程
- 21. 在并行线程
- 22. Java并行线程
- 23. 的Java同步差异线程
- 24. 多线程中的JRuby差异
- 25. 如何使每个表单都是自己的线程并且能够更新?
- 26. 情况时`pthread_join`可以失败/不被调用并且导致僵尸线程
- 27. 如果FreeOnTerminate = true并且在OnTerminate中抛出异常,线程会发生什么?
- 28. D3线图出错并且未得到绘图
- 29. 核心图给SIGABRT并且不运行线图
- 30. htaccess改写搞乱了样式表并且没有后斜线
从技术上讲,组件是一个组件,由一个或多个模块组成。它是.EXE或.DLL文件的模块。 – 2009-04-09 12:16:01
确实,您可以将模块合并到一个组合件中。这是我遗漏的很多细节之一! – Will 2009-04-09 13:33:08