协作式取消paralle.for

2024-05-08 10:48
文章标签 协作 取消 paralle

本文主要是介绍协作式取消paralle.for,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

协作式取消只能取消一次,如果想实现类似于开关的联动式协作,还得依赖于开关量,此时可以使用原子锁实现。


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace ConsoleApp53
{class Program{static void Main(string[] args){var cts = new CancellationTokenSource();var tf = new TaskFactory(cts.Token);tf.StartNew(() => DoSomething1(cts.Token));tf.StartNew(() => DoSomething2(cts.Token));Console.ReadKey();cts.Cancel();Console.WriteLine(DoSomething3());Console.ReadKey();}static async Task DoSomething3(){while (true){Console.WriteLine("Done;");await Task.Delay(1000);}}static void DoSomething1(CancellationToken token){Console.WriteLine("hello do something1");ParallelOptions ops = new ParallelOptions();ops.CancellationToken = token;try{Parallel.For(0, 100000, ops, (n) =>{ops.CancellationToken.ThrowIfCancellationRequested();Console.WriteLine(n);Task.Delay(1000);});}catch (OperationCanceledException){Console.ForegroundColor = ConsoleColor.Red;Console.WriteLine("DoSomething1 Canceled");}}static void DoSomething2(CancellationToken token){Console.WriteLine("hello do something2");ParallelOptions ops = new ParallelOptions();ops.CancellationToken = token;try{Parallel.For(0, 100000, (n) =>{ops.CancellationToken.ThrowIfCancellationRequested();Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));Task.Delay(1000);});}catch (OperationCanceledException){Console.ForegroundColor = ConsoleColor.Red;Console.WriteLine("DoSomething2 Canceled");}}}
}

这篇关于协作式取消paralle.for的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/970101

相关文章

Java中实现订单超时自动取消功能(最新推荐)

《Java中实现订单超时自动取消功能(最新推荐)》本文介绍了Java中实现订单超时自动取消功能的几种方法,包括定时任务、JDK延迟队列、Redis过期监听、Redisson分布式延迟队列、Rocket... 目录1、定时任务2、JDK延迟队列 DelayQueue(1)定义实现Delayed接口的实体类 (

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt

Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单

《Springboot的ThreadPoolTaskScheduler线程池轻松搞定15分钟不操作自动取消订单》:本文主要介绍Springboot的ThreadPoolTaskScheduler线... 目录ThreadPoolTaskScheduler线程池实现15分钟不操作自动取消订单概要1,创建订单后

C#如何优雅地取消进程的执行之Cancellation详解

《C#如何优雅地取消进程的执行之Cancellation详解》本文介绍了.NET框架中的取消协作模型,包括CancellationToken的使用、取消请求的发送和接收、以及如何处理取消事件... 目录概述与取消线程相关的类型代码举例操作取消vs对象取消监听并响应取消请求轮询监听通过回调注册进行监听使用Wa

远程桌面文件传输异常或者取消传输后一直显示正在取消

环境: Window Servers 2008 R2 摘要说明: 本篇文章主要讲述当应用远程桌面进行文件传输时,若因网络等导致进程中断,再次传输时则不能进行文件传输;或者传输时取消传输,然后一直显示正在取消。此时可以通过重启window的rdpclip.exe进程来解决此问题 步骤 1.关闭rdpclip.exe进程 远程桌面连上上传输异常的服务器,打开资源管理器,在进程列关闭rdpc

【Java编程思想】线程的基本协作机制 与 线程的中断

wait/notify Java在Object类中定义了一些线程协作的基本方法,wait和notify public final void wait() throws InterruptedException;public final native void wait(long timeout) throws InterruptedException; 一个带时间参数,单位是毫秒,表示最

【python requests警告】python3.x requests库取消ssl验证,InsecureRequestWarning: Unverified HTTPS request is be

警告信息: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warni

掌握Git分支管理策略:让团队协作更高效

在现代软件开发过程中,版本控制系统(VCS)是不可或缺的一部分。Git作为目前最流行的分布式版本控制系统之一,为开发者提供了强大的工具集来管理代码变更历史。然而,仅仅掌握Git的基本命令并不足以应对大型项目和团队协作的需求。有效的分支管理策略对于保持代码库的整洁、促进团队间的高效协作至关重要。本文将探讨几种常用的Git分支管理模型,并提供一些建议来帮助你的团队选择最适合的策略。 常见的分支管

Python知识点:如何使用Slack与Python进行团队协作

使用Slack与Python进行团队协作可以通过Slack的API来实现自动化消息发送、处理事件和管理频道等功能。以下是一些基本的步骤和示例代码来帮助你开始: 1. 创建Slack应用 首先,你需要在Slack上创建一个应用,以便获取API凭证: 访问 Slack API 页面 并登录你的Slack帐户。点击 “Your Apps”,然后点击 “Create New App”。选择 “Fro

Windows用户取消共享文件夹密码方法(Method for Windows Users to Cancel Shared Folder Password)

Windows用户取消访问共享文件夹密码方法 💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页,持续学习,不断总结,共同进步,活到老学到老 导航剑指大厂系列:全面总结 运维核心技术:系统基础、数据库、网路技术、系统安全、自动化运维、容器技术、监