单个接口添加超时时间_一种极简的异步超时处理机制设计与实现(C#版)

本文介绍了一种C#实现的超时任务运行器,提供添加和删除超时任务的接口,支持秒级超时精度。通过超时检测者和任务执行者实现任务的超时检测与回调执行,采用线程安全的数据结构确保多线程环境下的稳定性。
摘要由CSDN通过智能技术生成

1.引言

当执行某些动作之后,会期待反馈。最终要么是得到了结果,要么就是超时了。当超时发生时,可能是期望得到通知,或是希望能自动重试,等等。于是设计了一种通用的异步超时的处理机制,以期通过简洁易理解的方式完成超时的处理过程。

2.对外接口设计

从使用的角度,调用方期望的是“指定超时时长,时间到自动执行指定过程”,由此可以得出外部的操作接口参数。从功能角度来看,对于未超时的情况,需要提供在超时时长内随时清除超时任务的功能。

2.1操作接口

在这里,我们把设计的机制称里“超时任务运行器”,从外部来看,其接口与功能结构如下:

(1)添加超时任务,带上对象标识用于回调时传参,指定超时时长和超时回调方法即可把超时处理交给超时任务运行器。返回一个任务标识,用于后续可删除该超时任务。

(2)删除超时任务,指定任务标识即可删除。同时,支持清除一个对象的所有超时任务。

17c1b3bd5744169b510c960a42fc545e.png

2.2使用过程

发起异步操作的同时,添加超时任务,在异步操作成功时,删除超时任务。超时则运行器会自动执行超时任务。如下图,灰色部分由运行器完成:

be1e585ac9e578c3ec28df11da21080a.png

3.超时任务运行器设计与实现

首先,时长的精确粒度设定为秒,这表示超时最低可支持秒级(废话)。设计的基本思路为:对于加入的超时任务,运行器建立清单,并以秒为单位对清单中的任务进行检测,对于时间已经到达或超过的将其移动至超时任务执行队列中,由独立的超时任务运行线程来执行队列中的任务。这里,移动任务至执行队列的检测者谓之“生产者”,任务执行线程谓之“消费者”。

3.1基本结构

运行器维护一个超时任务清单和一个执行队列,一个超时检测者,它使用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值