简介
通过 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(): 停止任务,释放相关资源。
**示例:**创建并运行一个任务
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:**创建单次任务
tasks:next_tick(function()
print('单次任务执行完成!')
end)**示例2:**创建定时器任务
local timer = tasks:timeout_ms(2000, function()
print('定时器任务执行...')
end)
-- 可以通过 timer.cancel() 取消定时器**示例3:**停止所有任务
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。