线程 task pritce

Posted 冰翼之魂

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程 task pritce相关的知识,希望对你有一定的参考价值。

 

1.使用task类创建并执行简单任务

    使用task的构造函数来创建 任务,并调用start方法来启动任务,执行异步操作

   aitAll用于等待提供的所有 System.Threading.Tasks.Task 对象完成执行过程和Wait用于等待提供的任一个 

 

等待的方法还有2个 一个是waitall,另外一个是waitnay

//等待所有任务完成  
public static void WaitAll(params Task[] tasks);
//等待任意一个任务完成
public static int WaitAny(params Task[] tasks);

 

 

 

2. 等待任务的完成 并获取返回值

  使用任务执行异步操作时,很重要的一定就是 得到异步 操作完后的返回值 

  wait方法 可以等待 任务的执行完成 。

 

 

 

代码如下: 输出  1到3的数的总和

 

 

 

 结果如下:

 

3.    使用ContinueWith 在任务完成时 启动一个新任务


在 wait方法 等待一个 任务 时,有可能 会阻塞线程, 为了解决这个问题 ,我们可以使用ContinueWith方法
他能在一个任务完成时自动启动一个新的任务来 处理执行结果

 

 上述示例中任务不是等待完成来显示执行结果,而是使用ContinueWith方法,它能够知道任务在什么时候完成并启动一个新的任务来执行任务完成后的处理。

 

4.  创建父子任务和任务工厂的使用

   通过Task类创建的任务是顶级任务,可以通过使用 TaskCreationOptions.AttachedToParent
   标识把这些任务与创建他的任务相关联,所有子任务全部完成以后父任务才会结束操作

结果如下:

 

以上是关于线程 task pritce的主要内容,如果未能解决你的问题,请参考以下文章

Swift新async/await并发中利用Task防止指定代码片段执行的数据竞争(Data Race)问题

Swift新async/await并发中利用Task防止指定代码片段执行的数据竞争(Data Race)问题

C# 线程线程池Task概念+代码实践

Task.Run使用默认线程池

Java中通过Runnable与Thread创建线程的区别

多线程Task