app和网站趋势,成都哪家做网站比较好,互联网公司排名前十的在哪些城市,信誉好的o2o网站建设多线程目的#xff1a;其实就是希望“并行”执行多任务#xff0c;提升效率。
单核多线程基于时间片轮询 并发而非并行
线程最大数等于cpu核心数为佳
namespace thinger.ThreadDemo
{class Program{//主线程static void Main(string[] args){Console.WriteLine(这个…多线程目的其实就是希望“并行”执行多任务提升效率。
单核多线程基于时间片轮询 并发而非并行
线程最大数等于cpu核心数为佳
namespace thinger.ThreadDemo
{class Program{//主线程static void Main(string[] args){Console.WriteLine(这个是主线程执行的任务1);//。。。。。。。Thread thread new Thread(TStart); //基于委托传递具体方法//设为后台线程前台线程执行完 后台线程会被强制终止thread.IsBackground true;thread.Start();Thread thread2 new Thread(() {Thread.Sleep(2000);//模拟线程执行时间是2秒Console.WriteLine(这个是子线程2执行的内容);});thread2.IsBackground true;thread2.Start();Console.WriteLine(这个是主线程执行的任务2);Console.WriteLine(这个是主线程执行的任务3);Console.WriteLine(----------------------------);Console.ReadLine();}static void TStart(){Thread.Sleep(3000);//模拟线程执行时间是2秒Console.WriteLine(这个是子线程1执行的内容);}}
}
同步执行
阻塞与串行同步执行通常是阻塞且串行的。这意味着当一个任务开始时调用它的线程会一直等待该任务完成期间不会执行其他任务
异步执行
非阻塞与并发或并行异步执行是非阻塞的允许并发或并行处理。在异步模型中发起一个异步操作后调用者可以立即继续执行其他代码而不必等待该操作完成。 从主线程的角度来看是否是异步取决于主线程的行为
如果主线程调用了 Thread.Start() 后立即继续执行其他代码而不等待新线程完成那么这确实是异步执行。如果主线程调用了 Thread.Join() 等待新线程完成后再继续那么从主线程的角度看这是同步执行因为主线程会阻塞直到新线程完成。