C#线程参考手册Chapter 1笔记

来源:互联网 发布:uploadify php demo 编辑:程序博客网 时间:2024/06/05 16:19

多任务与多线程是两码事情,一个任务就好比一个应用程序,也可以是一个进程(一个应用程序可以有多个进程),一个进程可以有多个线程。.NET使用的是自由线程模式,线程不单独占用系统资源,只有进程能分配资源。进程、线程按时间片运行,如果线程在等待外部资源或其他的线程完成某个任务时,进程里的管理机制可以使该线程中断,把执行权让渡给其他线程。线程中断与线程睡眠不一样,中断的时候会把该线程添加到TLS(Thread Local Store)队列中并释放正在使用的资源,等待下一次时间片的到来再执行接着的操作。而线程睡眠会把该线程添加到一个特殊的队列(特别的TLS),但是不释放正在使用的资源,只要该线程被唤醒就继续执行。进程、线程都有执行的优先级,当一个进程创建一个线程的时候,该线程优先级默认为此进程的优先级。总是优先级高的进程、线程先执行,即便是一个等待的线程预备执行的时候,一个更高优先级的线程到来了,那么也会把执行顺序让给后来者。(不说这个了,这个主要是系统的规则,有些还可能是优先级可剥夺执行的。即当他到来时可以使正在执行的线程中断,把执行权让渡给自己。)进程、线程的优先级从0...31,0是系统使用的,表示什么都不是,懒家伙。1到15是系统用户使用的,16到31是系统管理员才能设置。 System.AppDomain class provides an additional layer of logical data isolation on top of the physical process data isolation. 一个进程可以包含几个应用程序域,一个应用程序域可以没有线程。 In general, it is impossible for standard processes to access each other's data without using a proxy. Using a proxy incurs major overheads and coding can be complex. However, with the introduction of the application domain concept, we can now launch several applications within the same process:这样就可以多个应用程序运行在一个进程里面,每个应用程序拥有自己的数据资源。但是由于在一个进程里面,所以不同的应用程序可以访问其他的应用程序的数据。 We also described how the .NET runtime monitors threads created in the .NET environment and additionally any unmanaged threads that execute managed code.反正除了在非托管的线程调用非托管的代码.NET CLR不管,其他的任何情况组合他都管。(比如:托管线程访问斐托管代码,非托管线程访问托管代码)

 

原址:http://linghuchong168.blog.163.com/blog/static/11465371200722651929317/

原创粉丝点击