下载此文档

C多线程学习手册.doc


文档分类:IT计算机 | 页数:约55页 举报非法文档有奖
1/55
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/55 下载此文档
文档列表 文档介绍
C#中的线程
注:文章系参考转载,英文原文网址请参考:eading/
作者:Joseph Albahari,  翻译: Swanky Wu
要点:
入门
概述与概念
创建和开始使用多线程
线程同步基础
同步要领
锁和线程安全
Interrupt 和 Abort
线程状态
等待句柄
同步环境
使用多线程
单元模式和Windows Forms
BackgroundWorker类
ReaderWriterLock类
线程池
异步委托
计时器
局部储存
高级话题
非阻止同步
Wait和Pulse
Suspend和Resume
终止线程
一、入门
1.  概述与概念
 C#支持通过多线程并行地执行代码,一个线程有它独立的执行路径,能够与其它的线程同时地运行。一个C#程序开始于一个单线程,这个单线程是被CLR和操作系统(也称为“主线程”)自动创建的,并具有多线程创建额外的线程。这里的一个简单的例子及其输出:
     除非被指定,否则所有的例子都假定以下命名空间被引用了:  
using System;
using ;
 
class ThreadTest
{
   static void Main()
{
     Thread t = new Thread (WriteY);
     ();                          // Run WriteY on the new thread
     while (true)
("x");   // Write 'x' forever
   }
  static void WriteY()
{
     while (true)
("y");   // Write 'y' forever
   }
}
 主线程创建了一个新线程“t”,它运行了一个重复打印字母"y"的方法,同时主线程重复但因字母“x”。CLR分配每个线程到它自己的内存堆栈上,来保证局部变量的分离运行。在接下来的方法中我们定义了一个局部变量,然后在主线程和新创建的线程上同时地调用这个方法。
static void Main()
{
  new Thread (Go).Start();      // Call Go() on a new thread
   Go();                         // Call Go() on the main thread
}
  
static void Go()
{
   // Declare and use a local variable - 'cycles'
   for (int cycles = 0; cycles < 5; cycles++)
('?');
}
变量cycles的副本分别在各自的内存堆栈中创建,输出也一样,可预见,会有10个问号输出。当线程们引用了一些公用的目标实例的时候,他们会共享数据。下面是实例:
class ThreadTest
{
  bool done;
    static void Main()
{
    ThreadTest tt = new ThreadTest();   // Create mon instance
    new Thread ().Start();
    ();
 }
  
 // Note that Go is now an instance method
 void Go()
{
    if (!done)
{
done = true;
("Done");
}
 }
}
 因为在相同的<b>ThreadTest</b>实例中,两个线程都调用了<b>Go()</b>,它们共享了<b>done</b>字段,这个结果输出的是一个"Done",而不是两个。
 静态字段提供了另一种在线程间共享数据的方式,下面是一个以done为静态字段的例子:

class ThreadTest
{
 static bool done;    // Static fields are shared between all threads
  static void Main()
{
    new Thread (Go).Start();
    Go();
  }
  
  static v

C多线程学习手册 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数55
  • 收藏数0 收藏
  • 顶次数0
  • 上传人260933426
  • 文件大小481 KB
  • 时间2017-10-09