首页 > 其他分享 >多线程基础知识

多线程基础知识

时间:2022-10-21 20:16:45浏览次数:95  
标签:Join 阻塞 基础知识 线程 span 多线程 ThreadState

【单核处理器和多核处理器的多线程】

单核处理器: 为每个线程分配时间片。来模拟并发

多核处理器:一核一线程,真正实现并发

 

【标志】

线程一致性,IsAlive就为true,否则为false

 

【线程结束的条件】

传入线程的委托结束了执行。

 

【特性】

线程一旦结束,就无法重启

每个线程都有一个Name,只能设置一次,再次修改就会报错

 

【线程状态属性】

ThreadState

//返回线程状态
        public static ThreadState GetThreadState(ThreadState state)
        {
            return state&(ThreadState.Unstarted | ThreadState.WaitSleepJoin|ThreadState.Stopped);
        }

 

 

【Join】

等待当前线程结束之后再进行其他线程的事情,这里相当于阻塞主线程

用法是

thread.Join()

Join还可以在里面加上时间,表示在设置的时间内进程内的委托是否执行完

实例语句

      public static TimeSpan span=new TimeSpan(0,0,1);


if (t.Join(span)) { Console.WriteLine("Thread Terminated"); } else { Console.WriteLine("Timeout has elapsed"); }

这里span是我设置的时间,t为一个线程,里面是休眠方法,休眠的时间超过了我设置的span,所以会执行下面的语句

 

【阻塞】

如果某线程因某种原因暂停,则认为被阻塞。比如Sleep和Join

判断是否阻塞

bool isBlock=(thread.ThreadState & ThreadState.WaitSleepJoin)!=0

 

【上下文切换】

当线程阻塞或者解除阻塞的时候,会进行上下文的切换。会有一定的开销,通常1~2ms。

 

【IO密集和CPU密集】

IO-Bound:一个花费大量时间等待某事发生的操作

CPU-Bound:一个花费大量时间进行CPU密集型工作的操作

 

【IO密集型的工作方式】

1.在当前线程上同步的等待

Console.WriteLine/Sleep/Join

2.异步等待,待完成后执行回调操作

 

标签:Join,阻塞,基础知识,线程,span,多线程,ThreadState
From: https://www.cnblogs.com/AduBlog/p/16814630.html

相关文章

  • 多线程技术总结
    csdn上笔记也多,但是用的不多,不用就忘了。博客线程笔记——技术笔记:.Net全套就业班视频教程在多线程中的跨线程的方法调用就得用委托。一个进程的多个线程间可相互......
  • Java多线程实现的四种方式
    实现多线程有以下四种方式实现多线程有以下四种方式:1.继承Thread类2.实现Runnable接口3.实现Callable接口4.线程池:提供了一个线程队列,队列中保存着所有等待状态的线程......
  • Java 多线程编程之八:多线程的调度
        本博客是“Java多线程编程”系列的后续篇。“Java多线程编程”系列其他博客请参阅本博客结尾部分。    有多个线程,如何控制......
  • Java 多线程编程之一 进程与线程,并发和并行的区别:吃馒头的比喻
    进程与线程,并发和并行的区别:吃馒头的比喻 没有线程编程的程序好比一个人一只手干活,而多线程的程序就比一个人多之手干活.进程是系统资源分配的独立单位,而线程是可调度......
  • 摄像头基础知识(二):Bayer、Raw与ISP
     摄像头基础知识(二):Bayer、Raw与ISP_EEer!的博客-CSDN博客_ispraw 摄像头基础知识(二):Bayer、Raw与ISPEEer!已于2022-10-1514:49:23修改254收藏分类专栏:camer......
  • 摄像头基础知识(一):mipi与lane
    摄像头基础知识(一):mipi与lane_EEer!的博客-CSDN博客 摄像头基础知识(一):mipi与laneVIP文章EEer!已于2022-10-1514:41:29修改469收藏2分类专栏:camera文章标签:c......
  • 进程、线程和多线程
    进程间通讯(IPC):管道、信号量、共享内存、消息队列、套接字管道:有名无名(有名无名的区别),在内存中写入,通讯方式:半双工信号量:特殊变量(一般取值大于等于0)例如0、1代表资源状......
  • java中的多线程的常用方法
    java中的多线程的常用方法/*Java中Thread(线程)中的常用方法。1.start():用来启动当前线程,调用当前线程的run()2.run():通常需要重写Thread中的此方法,将创建的线程......
  • Docker_基础知识
    容器概述容器本义:盛装物体、隔离物体。容器意义:解决虚拟化资源浪费的问题。容器沿革:1979---2013---                    版本:企业版(EE)/社区版(CE)1.......
  • 多线程
    多线程概念:Windows操作系统是多任务操作系统,它以进程为单位。每个独立执行的程序被称为一个进程,而每个进程又包含多个线程。系统可以分配给每个进程一段使用CPU的时间(CPU......