简介
通过 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。