C# 线程使用

线程创建的关键是要给它指定一段线程要执行的代码段,这段代码可以是任意可以访问到的函数,如其它类的静态函数,自己类定义的函数.
1. 先生成一个ThreadStart 类的实例,将要线程执行的代码和这个对象关联,
2. 再在创建线程时的构造函数里,用ThreadStart 类的实例实现关联,


下面的示例说明创建和启动线程。
[Visual Basic, C#, C++] 这段代码产生以下输出:
[C#]
using System;
using System.Threading;

public class ThreadWork
{
   public static void DoWork()    ()//这里定义了一个函数,后面线程就使用这个函数作为自己的运行代码

   {
      for(int i = 0; i<3;i++)
      {
         Console.WriteLine("Working thread...");
            Thread.Sleep(100);
      }
   }
}
class ThreadTest
{
   public static void Main()
   {

      //创建ThreadStart 类的实例,和线程要执行的代码(函数)实现关联,
      ThreadStart myThreadDelegate = new ThreadStart(ThreadWork.DoWork);
      Thread myThread = new Thread(myThreadDelegate);//用ThreadStart 类的实例和线程实现关联,
      myThread.Start();
         for(int i = 0; i<3; i++)
         {
         Console.WriteLine("In main.");
            Thread.Sleep(100);
         }
   }
}

第2个问题是,线程执行的代码里面,如何来共享使用进程里的变量呢?
这个靠线程执行的代码,即和线程关联的函数来决定,

1、当该函数是线程所属的类的成员函数时,就可以共享操作这个对象的所有资源,

2、当该函数是其它类的公共成员函数时,就可以操作其它类的变量

3、整个进程的全局变量,只要在代码中进行了操作,线程就也操作了全局变量.

一切都由和线程关联的函数的内容和性质决定.
因此在编写供线程使用的函数时要千万注意线程间资源的共享和冲突特点,共同操作的变量要给予同步,加锁等,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值