您当前的位置: 首页 >  c#

Jave.Lin

暂无认证

  • 2浏览

    0关注

    704博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C# Thread.Join的理解

Jave.Lin 发布时间:2018-05-10 11:27:45 ,浏览量:2

调用CalleeThread.Join()这句话的当前线程CurThread将被阻塞,直到CalleeThread线程完成后CurThread 刚刚CalleeThread.Join() 的后续代码才继续往下执行

举个栗子
// 栗子
// author : jave.lin
// date : 2018-05-10
void Main()
{
  Thread.CurrentThread.Name = "MainThread"; // 给当前线程命名为:MainThread

  var calleeThread = new Thread(()=>
  {
    var ms = 100;
    Console.WriteLine($"{Thread.CurrentThread.Name} Sleep {ms}ms");
    Thread.Sleep(100);
    Console.WriteLine($"{Thread.CurrentThread.Name} Sleep over, Join block will relrease");
  });
  calleeThread.Name = "CalleeThread";

  for(var i = 0; i < 1000; i++)
  {
    Console.WriteLine($"Quickly action for {i}");
  } // 这里for循环是很快就执行完的

  for(var i = 0; i < 1000; i++)
  {
    if (i==0)
    {
      calleeThread.Start();
      Console.WriteLine($"Wait {calleeThread.Name} sleep");
      calleeThread.Join(); // 这里等calleeThread.Join()解除阻塞后即可往下执行,等指令完成即可
      Console.WriteLine($"{calleeThread.Name} sleep over, continue for loop");
    }
    Console.WriteLine($"Wait {calleeThread.Name}.sleep over action for {i}");
  }
}
参考

关于C#中Thread.Join()的一点理解 C# 理解Thread.Join()方法

关注
打赏
1664331872
查看更多评论
立即登录/注册

微信扫码登录

0.0404s