GitHub - tidwall/neco: 用于 C 的并发库(协程)

主要观点:Neco 是一个提供协程并发的 C 库,小巧快速,旨在简化并发 I/O 和网络编程。
关键信息

  • 具备协程启动、睡眠、挂起、恢复、让步和连接等基本操作,以及通道、生成器、互斥锁、条件变量和等待组等同步机制。
  • 支持截止日期和取消功能,具有 Posix 友好的文件描述符接口,还有网络、信号、随机数生成、流和缓冲 I/O 等额外 API。
  • 轻量级运行时,有公平且确定性的调度器,快速的用户空间上下文切换,可嵌套的栈式协程,跨平台(Linux、Mac、FreeBSD,WebAssembly 和 Windows 有部分限制),单文件合并无依赖,有 100%覆盖率的测试套件。
  • 目标是为 C 程序提供快速单线程并发,使用类似 pthreads 或 Go 的并发模型,提供并发网络和 I/O API,便于与现有 Posix 函数互操作,不提供可扩展的多线程运行时或其他并发模型。
  • 使用时只需将“neco.c”和“neco.h”文件放入项目,有多种示例展示其用法,如启动协程、多个协程、协程参数、通道、生成器、连接服务器、创建服务器、回显服务器和客户端、协程的暂停和恢复等。
  • 平台方面,Linux、Mac 和 FreeBSD 支持所有功能,Windows 和 WebAssembly 有一些限制,如不支持某些 I/O 机制和特定功能。
  • 调度器使用 sco 是公平且确定性的,上下文切换由 llco 提供动力,在 AMD Ryzen 9 5950X 上约 11 纳秒,每个线程只能有一个调度器,不同线程的协程通信需使用非阻塞 I/O 机制。
    重要细节
  • 示例 1 用neco_start()启动协程,示例 2 可用neco_main()替代main(),示例 3 展示多个协程的运行,示例 4 说明协程的参数传递和作用域,示例 5 介绍通道的使用,示例 6 讲解生成器,示例 7 和 8 演示网络相关操作,示例 9 为回显服务器和客户端,示例 10 展示协程的暂停和恢复。
  • 许可证为 MIT 许可证。
阅读 16
0 条评论