知识大全 实例讲解.NET多线程执行函数

Posted 函数

篇首语:读书和学习是在别人思想和知识的帮助下,建立起自己的思想和知识。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 实例讲解.NET多线程执行函数相关的知识,希望对你有一定的参考价值。

实例讲解.NET多线程执行函数  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  这里为什么会出现多线程?原因是DebugLZQ在写一个LINQ综合Demo的时候遇到了多线程 便停下手来整理一下 关于多线程的文章 园子里很多很多 因此关于多线程理论性的东西 LZ就不去多说了 这篇博文主要是用最简单的例子 总结下多线程调用函数的相关注意点 重点偏向应用和记忆

   多线程调用无参函数

  using System;

  using System Collections Generic;

  using System Linq;

  using System Text;

  using System Threading;

  namespace 多线程

  class Program

  

  static void Main(string[] args)

  

  Console WriteLine( 主线程开始 );

  Thread t = new Thread(new ThreadStart(ShowTime));//注意ThreadStart委托的定义形式

  t Start();//线程开始 控制权返回Main线程

  Console WriteLine( 主线程继续执行 );

  //while (t IsAlive == true) ;

  Thread Sleep( );

  t Abort();

  t Join();//阻塞Main线程 直到t终止

  Console WriteLine( );

  Console ReadKey();

  

  static void ShowTime()

  

  while (true)

  

  Console WriteLine(DateTime Now ToString());

  

  

  

  

  注意ThreadStart委托的定义如下:

  

  可见其对传递进来的函数要求是:返回值void 无参数

   多线程调用带参函数(两种方法)

  using System;

  using System Collections Generic;

  using System Linq;

  using System Text;

  using System Threading;

  namespace 多线程 _带参数

  class Program

  

  static void Main(string[] args)

  

  Console WriteLine( Main线程开始 );

  Thread t = new Thread(new ParameterizedThreadStart(DoSomething));//注意ParameterizedThreadStart委托的定义形式

  t Start(new string[] Hello World );

  Console WriteLine( Main线程继续执行 );

  Thread Sleep( );

  t Abort();

  t Join();//阻塞Main线程 直到t终止

  Console ReadKey();

  

  static void DoSomething(object  s)

  

  string[] strs = s as string[];

  while (true)

  

  Console WriteLine( strs[ ] strs[ ]);

  

  

  

  

  注意ParameterizedThreadStart委托的定义如下:

  

  可见其对传入函数的要求是:返回值void 参数个数 参数类型object

  using System;

  using System Collections Generic; u

  sing System Linq;

  using System Text;

  using System Threading;

  namespace 多线程 _带参数

  class Program

  

  static void Main(string[] args)

  

  Guest guest = new Guest()

  

  Name= Hello Age=

  ;

  Thread t = new Thread(new ThreadStart(guest DoSomething));//注意ThreadStart委托的定义形式

  t Start();

  Thread Sleep( );

  t Abort();

  t Join();//阻塞Main线程 直到t终止

  Console ReadKey();

  

  

  //

  class Guest

  

  public string Name get; set;

  public int Age get; set;

  public void DoSomething()

  

  while (true)

  

  Console WriteLine( Name Age);

  

  

  

  

  这个还是使用ThreadStart委托 对方法进行了一个封装

  两种方法 可随意选择 第一种貌似简洁一点

   线程同步

  线程同步的方法有很多很多种volatile Lock InterLock Monitor Mutex ReadWriteLock

  这里用lock说明问题:在哪里同步 用什么同步 同步谁?

  首先感受下不同步会出现的问题:

  

  代码就是下面的代码去掉lock块

  using System;

  using System Collections Generic;

  using System Linq;

  using System Text;

  using System Threading;

  namespace 多线程 _同步

  class Program

  

  static object obj = new object();//同步用

  static int balance = ;

  static void Main(string[] args)

  

  Thread t = new Thread(new ThreadStart(Credit));

  t Start();

  Thread t = new Thread(new ThreadStart(Debit));

  t Start();

  Console ReadKey();

  

  static void Credit()

  

  for (int i = ; i < ; i++)

  

  lock (obj)

  

  balance += ;

  Console WriteLine( After crediting balance is balance);

  

  

  

  static void Debit()

  

  for (int i = ; i < ; i++)

  

  lock (obj)

  

  balance = ;

  Console WriteLine( After debiting balance is balance);

  

  

  

  

  

cha138/Article/program/net/201311/12352

相关参考

知识大全 VB.NET多线程开发实例

同Java一样简单!VB.NET多线程开发实例  以下文字资料是由(历史新知网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  VBNET

知识大全 asp.net利用多线程执行长时间的任务,客户端显示出任务的执行进度的示例

  在aspnet中执行一个长时间的操作有的时候需要在在客户端有一个反馈能了解到任务的执行进度大致看了一下有这么几种做法  ()按下按钮的时候给出一个<div>提示正在执行任务执行完毕让这

知识大全 高级应用 java多线程设计模式详解之一

  线程的创建和启动    java语言已经内置了多线程支持所有实现Runnable接口的类都可被启动一个新线程新线程会执行该实例的run()方法当run()方法执行完毕后线程就结束了一旦一个线程执行

知识大全 .net编程之路(四)

  现在我们来看看这段代码  如果创建这样的一个实例carMyCar=newcar(mazida)  那么这个实例调用的构造函数是初始化器转向执行带两个参数的构造函数  只读字段  readonly字

知识大全 用.NET动态创建类的实例讲解

用.NET动态创建类的实例讲解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  看了网上很多关于D

知识大全 详细讲解C#的多线程能力

详细讲解C#的多线程能力  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  线程是允许进行并行计算的

知识大全 Java多线程处理三大讲解

Java多线程处理三大讲解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!死锁  

知识大全 asp 函数与asp过程实例教程

  asp函数与asp过程提供了一种方法来创建重新编程代码可用模块和避免重写的代码每次您执行特定任务同一个块如果你没有任何职能/ASP页中的程序ASP页从上到下执行时ASP解析引擎只是处理从开始到结束

知识大全 C#多线程编程实例

C#多线程编程实例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  问题的提出  所谓单个写入程序

知识大全 JAVA多线程学习初步经典实例

JAVA多线程学习初步经典实例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  importjav