主要观点: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 许可证。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。