ORM提供的task机制
更新时间: 2025/10/29
在Gitcode上查看源码

简介

通过 c_task 和 c_tasks 类提供了灵活的任务管理和定时器功能。开发者可以根据需求创建不同类型的任务,并通过丰富的信号机制来处理任务生命周期中的各种事件。

目录

1.单任务创建

介绍:
c_task 类表示一个任务对象,负责管理任务的生命周期和执行逻辑。

属性:
name: 任务名称。
is_exit: 布尔值,表示任务是否已退出。
is_running: 布尔值,表示任务是否正在运行。
co: 协程对象,用于任务的执行。
cb: 任务回调函数。
timeout_ms: 整数,任务超时时间(毫秒)。
on_task_start: 信号,任务启动时触发。
on_before_run: 信号,任务执行前触发。
on_after_run: 信号,任务执行后触发。
on_task_exit: 信号,任务退出时触发。

方法:
ctor(name): 初始化任务对象。
set_timeout_ms(timeout_ms): 设置任务的超时时间。
run_task(cb): 运行任务回调函数,并返回执行结果。
loop(cb): 创建一个循环任务,定期执行回调函数。
once(cb): 创建一个一次性任务,执行回调函数后停止。
stop(): 停止任务,释放相关资源。

**示例:**创建并运行一个任务

lua
local task = tasks:new_task('my_task')
task:loop(function()
    print('任务正在运行...')
    tasks:sleep_ms(1000) -- 休眠1秒
end)

2.多任务创建

介绍:
c_tasks 类用于管理多个任务对象,提供任务的创建、管理和定时器功能。

属性:
tasks: 表,存储所有任务对象。
task_id: 整数,任务ID计数器。
task_count: 整数,当前任务总数。
on_remove_task: 信号,任务被移除时触发。

方法:
ctor(): 初始化任务管理器。
alloc_task_id(): 分配新的任务ID。
new_task(name): 创建并返回新任务对象。
named_next_tick(name, cb, ...): 创建命名的单次任务。
next_tick(cb, ...): 创建无名的单次任务。
get_task(task_name): 获取指定任务对象。
sleep_ms(timeout_ms): 休眠指定时间(毫秒)。
timeout_ms(timeout_ms, cb, ...): 创建定时器任务。
match_tasks(name_pattn): 根据名称匹配任务。
stop_all(): 停止所有任务。

**示例1:**创建单次任务

lua
tasks:next_tick(function()
    print('单次任务执行完成!')
end)

**示例2:**创建定时器任务

lua
local timer = tasks:timeout_ms(2000, function()
    print('定时器任务执行...')
end)
-- 可以通过 timer.cancel() 取消定时器

**示例3:**停止所有任务

lua
tasks:stop_all()

3.对外接口

3.1 创建任务

new_task(name): 创建并返回一个新任务对象。

  • 参数:
    name: 任务名称,可选。
  • 返回值:
    c_task 对象。

named_next_tick(name, cb, ...): 创建一个命名的单次任务。

  • 参数:
    name: 任务名称。
    cb: 回调函数。
    ...: 回调函数的参数。
  • 返回值:
    c_task 对象。

next_tick(cb, ...): 创建一个无名的单次任务。

  • 参数:
    cb: 回调函数。
    ...: 回调函数的参数。
  • 返回值:
    c_task 对象。

3.2 管理任务

get_task(task_name): 获取指定任务对象。

  • 参数:
    task_name: 任务名称。
  • 返回值:
    存在时返回 c_task 对象,否则返回 nil。

stop_all(): 停止所有任务。

  • 参数:
    NA。
  • 返回值:
    NA。

match_tasks(name_pattn): 根据名称匹配任务。

  • 参数:
    name_pattn: 任务名称的正则表达式。
  • 返回值:
    匹配的任务对象列表。

3.3 定时器功能

timeout_ms(timeout_ms, cb, ...): 创建一个定时器任务。

  • 参数:
    timeout_ms: 定时时间(毫秒)。
    cb: 回调函数。
    ...: 回调函数的参数。
  • 返回值:
    定时器对象,包含 cancel, is_running, on_error 方法。

sleep_ms(timeout_ms): 休眠指定时间(毫秒)。

  • 参数:
    timeout_ms: 休眠时间(毫秒)。
  • 返回值:
    NA。