当前位置: 首页 > news >正文

lib-zo,C语言另一个协程库,整理

lib-zo

一个 C 协程库, 项目地址 https://github.com/mailhonor/lib-zo

API文档 https://github.com/mailhonor/lib-zc/blob/master/doc/coroutine.md

感谢

本协程库的实现参考了 libco, libgo, nodejs 的实现

介绍

  • 支持文件IO操作协程化(如 mkdir, getdents 等)
  • 支持协程条件, 协程锁
  • 慢操作协程化
  • 支持 sleep
  • 可以禁用/启用给定的 fd 协程化
  • 可以禁用 UDP 协程切换
  • 部分支持 dns 协议
  • 支持静态编译

睡眠

  • 支持 sleep
  • 不支持 usleep 和 nanosleep
  • 毫秒睡眠请用 void zcoroutine_sleep_millisecond(int milliseconds);

支持的文件io

可开启支持文件 IO 在其他线程池工作, 这些IO函数包括:

  • open, openat, close, read, readv, write, writev, lseek,
  • fdatasync, fsync, rename, truncate, ftruncate,
  • rmdir, mkdir, getdents,
  • stat, fstat, lstat, link, symlink, readlink, unlink,
  • chmod, fchmod, chown, fchown, lchown, utime, utimes,

支持慢(阻塞式)操作

  • 操作可以在其他线程池工作

dns协议

本框架下, 大部分 glibc 版本的 DNS 解析会有 BUG, 但至少版本 2.12 没问题.

如果有问题, 建议:

  • 如果需要查询常用域名的 IP 地址, 可以写到 hosts 文件
  • 可以考虑 “慢操作协程化”
  • 可以禁用 53 端口(既 DNS)的 UDP 协程切换

可以禁用 UDP 协程切换

  • 可以禁用 UDP 协程切换,
  • 可以禁用 53 端口(既 DNS)的 UDP 协程切换

源码目录

coroutine.c coroutine.h 是源码

*_test.c 是例子

编译

make

得到

libzc_coroutine.a

使用

gcc your_code.c ./libzc_coroutine.a

其他

lib-zo,C语言另一个协程库,激活文件IO操作协程化

相关文章:

  • leetcode0704. 二分查找-easy
  • 关于labview中路径的问题
  • 一款功能强大的手机使用情况监控工具
  • 探访 DINO 家族 Part 4:融合多模态大语言模型的视觉模型基础 RexSeek
  • 【计算机网络】记录一次校园网无法上网的解决方法
  • Android 地区选择器或者其他选择器
  • 【蓝桥杯14天冲刺课题单】Day 1
  • 指针函数、函数指针和指针函数指针的全面总结
  • MySQL表缺乏主键或唯一索引对主从复制的深度影响及解决方案
  • linux课程学习三——静态/动态库的创建
  • 使用无人机进行露天矿运输道路分析
  • js中三元表达式(条件运算符)的用法总结
  • VCP考试通过率低?
  • vs2022中使用spdlog、C++日志
  • 时序数据库 InfluxDB(五)
  • 文件分享系统--开源的可视化文件共享管理工具
  • LeetCode 438. 找到字符串中所有字母的异位词
  • 9、tlm 事务交互通信
  • 【11408学习记录】破译语言密码·征服数学迷宫——长难句拆解与方程不等式全析
  • RK3588使用笔记:系统算法依赖库安装
  • 手机如何做车载mp3下载网站/seo技术优化技巧
  • 新的网站设计公司/淘宝客推广一天80单
  • 京东网站建设框架图/百度引擎
  • photoshop电脑版/天津百度关键词seo
  • 深圳求做网站/指数函数
  • 十八把网站做扇子/赣州网站建设公司