C#中的多线程
By Joseph Albahari, Translated by Swanky Wu
Based on "C# 3.0 in a Nutshell" by
Joseph Albahari and Ben Albahari (O'Reilly Media)
http://www.albahari.com/nutshell/
入门
概述与概念
创建和开始使用多线程
线程同步基础
同步要领
锁和线程安全
Interrupt 和 Abort
线程状态
等待句柄
同步环境
使用多
线程
单元模式和Windows
Forms
BackgroundWorker类
ReaderWriterLock类
线程池
异步委托
计时器
局部储存
高级话题
非阻止同步
Wait和Pulse
Suspend和Resume
终止线程
概述与概念
C#支持通过多线程并行地执行代码,一个线程有它独立的执行路径,能够与其它的线程同时地运行。一个
C#程序开始于一个单线程,这个单线程是被CLR和操作系统(也称为“主线程”)自动创建的,并具有多
线程创建额外的线程。这里的一个简单的例子及其输出:
除非被指定,否则所有的例子都假定以下命名空间被引用了:
using System;
using System.Threading;
class ThreadTest {
static void Main() {
Thread t = new Thread (WriteY);
t.Start(); // 在新的线程中运行WriteY
while (true) Console.Write ("x"); // 不停地写'x'
}
static void WriteY() {
while (true) Console.Write ("y"); // 不停地写'y'
}
}
xxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
...
主线程创建了一个新线程“t”,它运行了一个重复打印字母"y"的方法,同时主线程重复但因字母“x”。
CLR分配每个线程到它自己的内存堆栈上,来保证局部变量的分离运行。在接下来的方法中我们定义了一
个局部变量,然后在主线程和新创建的线程上同时地调用这个方法。