摘要:
单元模式和Windows Forms单元是多线程的逻辑上的“容器”,单元产生两种容量——“单的”和“多的”。单线 程单元只包含一个线程;多线程单元可以包含任 何数量的线程。单线程模式更普遍 并且能与两者有互操作性。 就像包含线程一样,单元也包含对象,当对象在一个单元内被创建后,在它的生 命周期中它将一直存在在那,永远也“居家不 出”地与那些驻留线程在一起。在排它锁的控制中,任何线程可以访问在任何同步环境中的对象。但是单元内的对象只有单元内的线程才可以访问。想象一个图书馆,每本书都象征着一个对象;借出书是不被允许的,书都在图书馆 创建并直到它寿终正寝。此外,我们用一个 人来象征一个线程。一个同步 阅读全文
摘要:
一、同步要领1.阻止 (Blocking)当一个简易阻止方法、锁系统、信号系统等方式处于等待或暂停的状态,被称为被阻止。一旦被阻止,线程立刻放弃它被分配的CPU时间,将 它的ThreadState属性添加为WaitSleepJoin状态,不在安排时间直到停止阻止。停止阻止在任意四种情况下发生(关掉电 脑的电源可不算!): 阻止的条件已得到满足 操作超时(如果timeout被指定了) 通过Thread.Interrupt中断了 通过Thread.Abort放弃了当线程通过(不建议)Suspend 方法暂停,不认为是被阻止了。2.休眠 和 轮询调用Thread.Sleep阻止当前的线程指定的时间( 阅读全文
摘要:
一、概述与概念 C#支持通过多线程并行地执行代码,一个线程有它独立的执行路径,能够与其它的线程同时地运行。一个C#程序开始于一个单线程,这个单线程(也称为“主线程”)是被CLR和操作系统自动创建的,能够通过添加额外的线程创建多线程。 下面是个简单的例子:class Program01 { static void Main() { Thread t = new Thread(WriteY); t.Start(); while (true) Console.Write("x"); } ... 阅读全文
摘要:
在.net平台下,应用程序和线程之间不是一一对应的。 在任何时间,一个应用程序域内都可能有多个线程。 而且,一个特定的线程在它的生命周期内并不一定被限定在一个应用程序域中。windows线程调度程序和CLR会根据需要让线程能够自由地跨越应用程序域的边界,但是在任何一个时间点上,一个线程只能运行在一个应用程序域中(也即是说,一个线程同时在多个应用程序域上执行任务是不可能的).net 4 TPL(Task Parllel Library 任务并行库),能用最小的代价比较省心地创建额外的线程。19.7 以编程方式创建次线程步骤 1.创建一个方法作为新线程的入口点 2.创建一个Parameterize 阅读全文
摘要:
进程简单说就是一个运行的程序,是一个操作系统级别的概念,用来描述一组资源和程序运行所必需的内存分配。一个进程的失败不会影响到其他的进程。线程是进程中的基本执行单元。进程的入口点创建的第一个线程被称为主线程。 我们可以创建工作者线程来执行强度大的工作,主线程仍然对用户的输入保持响应。这使得整个进程具有更强的性能。但是,如果单个进程中的线程过多的话,性能反而会下降,因为CPU需要花费不少时间在这些活动的线程之间来回切换。单CPU的计算机并没有能力在同一时间运行多个线程。在一个单位时间(一个时间片)内,单CPU只能根据线程的优先级执行一个线程。当一个线程的时间片用完的时候,它会被挂起,以便执行其他线 阅读全文