自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 收藏
  • 关注

原创 一个C/C++协程库的思考与实现之协程库的正常退出

https://github.com/DoasIsay/ToyCoroutine我发现协程只能在对端主动断开连接后才能被动退出,并不能主动退出,做为服务端其实不应当主动断开连接退出,你不知道客户端还有没有数据要发,及客户端的发送缓冲区还有没有数据未发完,如果客户端没有在应用层实现ack及重试机制就有可能导致数据丢失,但协程不一定要只用在服务端思来想去,我还是想,像在多线程,多进程编程环境中那样,在代码中设一全局变量isExit,当 kill进程时,在信号处理函数中设isExit为true时,进程可以

2020-08-26 23:14:34 42

原创 一个C/C++协程库的思考与实现之协程栈的动态按需增长

https://github.com/DoasIsay/ToyCoroutine对于操作系统的任务(进程或线程)而言,任务所需的栈内存,堆内存,并不是任务启动后或发起内存申请(brk/mmap/malloc/new)后操作系统立即为其分配物理内存,而是先为其在进程的虚拟地址空间中找到一块空闲的空间标记其大小起止地址及访问权限,当CPU真正访问到任务未分配物理内存的虚拟页内的地址时MMU会产生一个内存缺页中断,此时在缺页中断处理中操作系统才会真正的为任务分配一页物理内存并更新进程的页表如何检测协程是否

2020-08-25 21:16:35 623 1

原创 一个C/C++协程库的思考与实现之协程的errno与信号处理

https://github.com/DoasIsay/ToyCoroutine每个线程都有自己的errno,那么协程是否也需要自已的errno?如果这样写代码,那每个协程要有自已的errno在hook的系统调用中当io读写不能满足时,就进行协程切换,在io可读写返回到用户代码后继续使用errno,此时的errno可能已经不是协程切换前的errno了,因为期间其它协程也会call系统调用,所以因在hook系统调用的代码中,在协程切换前先保存errno的值,因为协程恢复后会先判..

2020-08-24 21:49:37 294 1

原创 一个C/C++协程库的思考与实现之协程的跨线程负载均衡调度

https://github.com/DoasIsay/ToyCoroutine其实一开始我并不想让ToyCoroutine支持多线程,多进程SO_REUSEADDR其实也挺好的,大家各跑各的互不影响,但在写代码时我又时刻考虑到多线程,毕竟,没有多线程间的同步协作那该是多么的无聊啊,,,我在想当在多线程环境中使用协程库时,比如在一台8核的机器上,创建7个线程(调度器线程),每个线程负责一部分协程的调度执行,如何避免一些线程很忙导致协程调度超时,另一些线程却很空闲处于无协程可调度执行的状态?把忙的

2020-08-23 09:33:37 751 1

原创 一个C/C++协程库的思考与实现之协程的互斥量与条件变量

https://github.com/DoasIsay/ToyCoroutine在为ToyCoroutine的协程实现互斥量与条件变量时,测试过程中竟然死锁了,代码如下我怀疑是producer,consumer使用了同一个条件变量进行协作导致的,测试时刚好创建了2个consumer协程,1个producer协程,当consumer1协程与producer协程都cond.wait在同一个条件变量时,由于调度原因consumer2调用cond.signal如果每次唤醒的都是consumer1,在最后

2020-08-11 21:48:13 519 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除