Skip to content

ZCO v0.3.1 - 协程级定时器生命周期管理

Choose a tag to compare

@funnywwh funnywwh released this 25 Oct 01:27
· 79 commits to main since this release

🚀 ZCO v0.3.1 - 协程级定时器生命周期管理

📋 版本概述

ZCO v0.3.1 引入了革命性的协程级定时器生命周期管理,实现了定时器与协程运行状态的完全绑定。这一重大更新不仅提供了更精确的协程调度控制,还带来了显著的性能提升。

✨ 主要新特性

🎯 协程级定时器生命周期管理

  • 细粒度控制: 定时器生命周期与协程运行状态完全绑定
  • 智能启动: 协程运行时自动启动定时器并重置计时(从0开始)
  • 即时停止: 协程挂起时立即停止定时器,避免无效中断
  • 资源优化: 空闲时不运行定时器,显著节省CPU资源

⚡ 性能大幅提升

  • 低并发场景: RPS 提升 41% (25,970 → 36,593)
  • 高并发场景: RPS 提升 16% (24,596 → 28,462)
  • 响应时间: 全面改善 14-29%
  • 资源效率: 空闲时CPU使用率显著降低

🔧 技术改进

架构优化

  • 移除了 timer_started 全局状态标志
  • 实现了协程级别的定时器状态管理
  • 优化了信号处理开销和CPU缓存局部性

调度器增强

  • 每个协程获得完整时间片(从0开始计时)
  • 避免了时间片碎片化问题
  • 提高了协程切换的公平性

📊 性能基准测试

测试场景 版本 RPS 平均响应时间 性能提升
10,000/100 v0.2.2 25,970 3.851ms -
10,000/100 v0.3.1 36,593 2.733ms +41%
50,000/500 v0.2.2 24,596 20.329ms -
50,000/500 v0.3.1 28,462 17.567ms +16%

🛠️ API 变更

新增方法

// 停止定时器
pub fn stopTimer(self: *Schedule) void

行为变更

  • startTimer() 现在每次调用都会重置定时器
  • 协程 Resume() 时自动启动定时器
  • 协程 Suspend() 时自动停止定时器
  • 协程结束时自动停止定时器

📝 使用示例

// 协程级定时器生命周期示例
const s = try zco.getSchedule();

_ = try s.go(struct {
    fn run() !void {
        const co = try zco.getSchedule().getCurrentCo();
        
        // 协程运行时,定时器自动启动并重置
        std.log.info("协程开始运行,定时器已启动");
        
        // 长时间计算...
        for (0..1000000) |i| {
            _ = i * 2;
        }
        
        // 主动挂起时,定时器自动停止
        try co.Suspend();
        std.log.info("协程挂起,定时器已停止");
        
        // 恢复时,定时器重新启动并重置
        try co.Resume();
        std.log.info("协程恢复,定时器重新启动");
    }
}.run, .{});

🔄 迁移指南

从 v0.2.2 升级

  1. 无需代码修改: 所有现有代码完全兼容
  2. 自动优化: 定时器管理自动优化,无需手动干预
  3. 性能提升: 升级后自动获得性能提升

注意事项

  • 定时器现在完全由协程生命周期管理
  • 不再需要手动管理 timer_started 状态
  • 协程挂起时定时器会自动停止

🐛 修复和改进

  • 修复了定时器在协程切换时的状态不一致问题
  • 优化了高并发场景下的协程调度性能
  • 改进了空闲状态下的资源使用效率
  • 增强了协程调度的公平性

📚 文档更新

  • 更新了 README.md 突出显示新特性
  • 添加了详细的 CHANGELOG.md
  • 完善了 API 文档和使用示例

🎯 适用场景

  • 高并发网络服务器: 显著提升HTTP服务器性能
  • 实时系统: 精确的协程调度控制
  • 资源敏感应用: 空闲时自动节省CPU资源
  • 协程密集型应用: 更好的调度公平性

🔗 相关链接

🙏 致谢

感谢所有贡献者和用户的支持,让 ZCO 能够持续改进和优化!


下载: ZCO v0.3.1
完整变更日志: CHANGELOG.md