gpt4 book ai didi

.NET Windows 多线程thread编程

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 29 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章.NET Windows 多线程thread编程由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

进程:工厂搬砖头,10个工人搬完1000个砖头  线程:每个工人,搬完100个砖头,就是一个任务  采用线程,异步搬:  手工去搬,10个工人同时搬,效率高,异步执行,如果不采用线程,等第一个人搬完后第二个人才搬,那就慢了 什么时候不能用线程:  如果要用小车来搬,只有一个小车,那么,在这样的情况下,就不应该用线程,因为只有一个小车,各个线程都在争夺和等待这个小车,所以不能用线程。如果这个时候还要用线程,则导致资源浪费,  因为每个线程都有自己的资源,如包工头(CPU)同一时间要管理这10个工人,而只有一个工人实际在做事。  线程的销毁:在销毁的时候需要考虑一些问题,比如搬砖头时,你不可能在一个工人搬到一半的时候,你将他销毁,那砖头往哪放呢? 1..net里使用线程  .net里使用线程,用thread类,定义线程,启动,销毁,全部包括在这个类里定义一个线程,必须指定这个线程的函数,也就是这个线程是做什么的,搬砖头呢还是挑水  EG:  。

复制代码代码如下

Thread t = new Thread( new ThreadStart( st.WorkerMethod ) );  t.Start ();  public void WorkerMethod()  {  Console.WriteLine ("AA ");  }  。

2.如果使用带有参数的线程  线程本身是不能带参数的,只能在类里定义一个全局变量,线程前先给这个变量赋值,然后在线程的函数里,去使用这个变量,以达到传参数的目的  EG:  。

复制代码代码如下

public class SimpleThread  {  private string procParameter = "";  public SimpleThread (string strPara)  {  procParameter = strPara;  }  public void WorkerMethod()  {  Console.WriteLine ("参数输入为: " + procParameter);  }  }  class MainClass  {  /// <summary>  /// 应用程序的主入口点。  /// </summary>  [STAThread]  static void Main(string[] args)  {  SimpleThread st = new SimpleThread("这是参数字符串!");  Thread t = new Thread( new ThreadStart( st.WorkerMethod ) );  t.Start ();  t.Join (Timeout.Infinite);  }  }  。

3.线程和委托  委托的目的:类似C++的指钟,就是要把函数当做参数来传递  4.应用程序域  10个工人各自搬各自的,隔离开,不相互受影响,一个人抱怨不搬了,不影响其他人,电脑里也是一样的情况,各个应用程序间不能干扰,程序间不能访问,并且一个程序死了,整个电脑部能死机。  5.线程池  就如内存,如果工人搬砖头,突然有2个工人因为什么原因不能搬了,那么从线程池里调用其他线程来做,性能好,创建一个线程需要浪费时间和资源  6.异步调用  调用WebService为例  同步:调用一个WebService时,调用完了,才执行下面的代码,如果在调用的时候,阻塞了,那么就要等待很久  异步调用:调用WebService,代码继续往下执行,WebService执行完了后,再传回到接收器对象。  7.多线程的应用,利用线程排序  排序1000个数,如果一个线程排,需要1000毫秒  如果10个线程排,则只需要大概100毫秒  当然,排序的时候a[i] a[i+1],同时只能有一个线程对他进行操作  所以,在For里面,i和i+1交换的时候,需要事先进行锁定。  。

复制代码代码如下

for (int t = 0; t < x; t++)//X为线程数  {  Thread thread = new Thread(new ThreadStart(Sort));//Sort排序的方法  thread.Name = Convert.ToString(t);  thread.Start();  }  public void Sort()  {  try  {  while (true)  {  swaped = false;  for (int j = 0; j < valueArray.Length - 1; j++)  {  lock (typeof(Thread))//锁定  {  if (valueArray[j] > valueArray[j + 1])  {  int T = valueArray[j];  valueArray[j] = valueArray[j + 1];  valueArray[j + 1] = T;  swaped = true;  }  }  }  Thread.Sleep(1);  if (!swaped) { break; }  }  Thread.CurrentThread.Abort();  }  catch (Exception ex)  {  if (Interlocked.Increment(ref threadCounter) == Convert.ToInt64(ddlThreadNum.SelectedItem.ToString().ToString().Trim()))  Display();  }  }  。

最后此篇关于.NET Windows 多线程thread编程的文章就讲到这里了,如果你想了解更多关于.NET Windows 多线程thread编程的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com