.NET 多线程和并发性管理(Multithreading and Concurrency Management)

典型的应用程序都是由两种基本的操作组成的:CPU-boundI/O-bound;
常用的I/O-bound的操作有:
    I/O 设备 : 键盘,显示器,鼠标和打印机等.
    硬件驱动:
    网络或通讯端口;
    其它硬件设备
区分不同的操作类型有助于分配不同的任务到不同的线程,这样可以提高程序的性能、增加硬件的吞吐量。不过切记不要为了多线程而多线程,否则就像打开了潘多拉的盒子,有无数麻烦的事情等着你,例如:线程同步、组件并发性等问题。

Threads

在.NET中,线程是最基本的执行单元。在Windows操作系统下,每个.NET线程都可以一一映射到Win32线程。
public sealed class Thread
{
    public static Thread CurrentThread {get;}
}

访问threadId的方法
using System.Threading;

Thread currentThread = Thread.CurrentThread;//获得Thread的实例
int threadId = currentThread.ManagedThreadId;//可以保证在这个进程中是唯一的

给线程命名:
using System.Threading;
Thread currentThread = Thread.CurrentThread;//获得Thread的实例
currentThread.Name = "Main UI Thread";

创建线程

    a. 创建Thread对象;
    b. 把Thread对象和一个thread处理函数关联
线程处理函数可以是有形参和无形参的,例如:
void <MethodName>();
void <MethodName>(object argument);
无形参的必须把函数名称赋给一个专门的deligate: ThreadStart
public delegate void ThreadStart();

public class MyClass
{
    public void ShowMessage()
    {
        Thread currentThread = Thread.CurrentThread;
        string caption = "Thread ID = " + currentThread.ManagedThreadId;
        MessageBox.Show("ShowMessage runs on a new thread", caption);
    }
}

MyClass obj = new MyClass();

ThreadStart threadStart = obj.ShowMessage;
Thread workerThread = new Thread(threadStart);
workerThread.Start();//Start执行完毕,马上就把控制权交给当前线程,而不是新创建的线程

设计线程处理函数
线程处理函数通常都包括一个循环,如下所示:
public void MyThreadMethod()
{
    while (<some condition>)
    {
        <Do some work>
    }
}
(To be Continued)

posted on 2007-10-03 11:31  Hill Jing  阅读(1308)  评论(0编辑  收藏  举报

导航