.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)

转载于:https://www.cnblogs.com/cphobby/archive/2007/10/03/912483.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值