当前位置: 首页 > news >正文

C#—多线程

Task:

 Task(任务) 是在 ThreadPool(线程池)的基础上推出的。
             * ThreadPool中有若干个数量的线程,如果有任务需要处理时,会才从栈程池中获取一个空闲的线程来执行任务,任务执行管完毕后线程不会销毁。而是被线程池回收供以后使用。
             * 当线程池中所有的线程都在忙碌,又有新的任务进来,线程池一般会新建一个线程来处理这个任务,如果线程池数量达到上限,任务会排队,等待其他任务释放线程后再执行。
             * 这样操作线程池能减少线程的创建,节省开销。

异步操作:


  1. new 方式来创建一个task,需要调用的时候再执行。
        Task task = new Task(() =>{Thread.Sleep(1000);Console.WriteLine($"task的进程的id为:{Thread.CurrentThread.ManagedThreadId}");});
  2.调用一个任务
task.Start();Task task2 = new Task(() =>{Thread.Sleep(1000);Console.WriteLine($"task2的进程的id为:{Thread.CurrentThread.ManagedThreadId}");});task2.Start();
3.同步执行“按照从上至下的顺序”。
 Fun2();Console.WriteLine("===============");Fun();Console.ReadLine();}static void Fun(){Thread.Sleep(1000);Console.WriteLine("hello1");}static void Fun2(){Thread.Sleep(1000);Console.WriteLine("hello2");}}
}

异步方法

同步操作读取文件函数
 public static string Fn1(){FileStream file = new FileStream(@"text.txt",FileMode.Open);byte[] buffer = new byte[file.Length];file.Read(buffer,0,buffer.Length);string res = Encoding.UTF8.GetString(buffer);return res;}
异步操作读取文件函数
 async public static Task<String> Fn2(){FileStream file = new FileStream(@"text.txt",FileMode.Open);byte[] buffer = new byte[file.Length];file.Read(buffer, 0, 10);string res = Encoding.UTF8.GetString(buffer);return res;}


http://www.mrgr.cn/news/11597.html

相关文章:

  • 【jvm】栈是否存在垃圾回收
  • v4l2(video4linux2) yuyv(yuv422)、MJPEG、H.264
  • yocto | 基于Linux的定制系统跑Qt app(第一集)
  • 【精选】基于Python的热门旅游景点数据分析系统的设计与实现(南京旅游,北京旅游,旅游网站,全国各地旅游网站)
  • Hugo博客搭建
  • 数据库集群技术
  • 我写的全部R包和函数,持续更新中
  • 【网络安全】绕过输入验证
  • 博弈论详解 1(基本理论定义 和 Nim 游戏)
  • 基于python的pytest单元测试框架
  • PyTorch构建模型网络结构的6种方式
  • 游戏开发设计模式之原型模式
  • 设置虚拟机使用主机以太网而不是WiF连接
  • AI是在帮助开发者还是取代他们?
  • (二十六)STL vector容器(动态数组)
  • 栈+贪心,LeetCode 2434. 使用机器人打印字典序最小的字符串
  • 新手必备20个CAD实用操作技巧,学完这些轻松拿捏CAD!
  • 从“云、边、端”的统一管理,为传统工厂数字化转型赋能的智慧地产开源了
  • HW数通IA笔记2-网络参考模型
  • 新疆旅游今年为什么这么火热?