-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtodo
42 lines (41 loc) · 1.89 KB
/
todo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
TODO:
环切(runnable状态)搭配星切, 提升协程切换性能
打造类似TLS的CLS(协程局部对象)
hook __poll, 源syscall使用__libc_poll, 以支持gethostbyname系列函数
协程亲缘性
支持同时等待多个Channel
DONE:
支持exception
优化co_mutex, 为BlockWait抽象出一个WaitObject, 管理等待中的协程, 以免不同的WaitObject竞争同一个全局锁
阻塞socket的超时设置(RECVTIMEO, SENDTIMEO)在协程中处理
修复gtest单元测试代码链接错误的问题
支持poll
支持accept
支持asio
降低空转时的cpu资源占用
解决http性能测试出现error, 无法加入epoll的问题
支持sleep nanosleep poll(timeout)
正确处理Add into epoll, add into wait_list, set timer And epoll_wait, cancel这几件事的同步关系
支持select
支持channel特性
添加命名空间
HOOK read write时, 不要影响读文件
使用shared-stack方案, 降低一点点协程切换速度换取内存的节约使用, 支持创建海量协程
网络IO以外的阻塞调用, 可以使用co_await异步化
select中对exceptfds正确检测!
移植Windows:
1.HOOK WINAPI, 使用多select模型
Hook List: accept connect select WSARecv WSASend
2.ucontext->windows.fiber
WIN HOOK: send recv WSARecv** WSASend**
重新尝试boost.context\boost.coroutine
增加编译选项:ENABLE_BOOST_COROUTINE DISABLE_HOOK ENABLE_SEGMENTED_STACK
支持多个线程poll同一个fd
HOOK close接口, 正确模拟阻塞式read/write中被close时的行为(close后唤醒等待这个fd的协程)
优化性能, HOOK的syscall中减少syscall的调用, 使用缓存数据, 避免频繁切换内核态
改进定时器, 从双红黑树改为单红黑树, 提升性能
改进定时器, 加快cancel的速度.(方案1.使用侵入式红黑树. 方案2.保存iterator)
Work Stealing...
__attribute__ ((always_inline))
调度器重入不再crash
HOOK select poll时, 正确处理文件等非socket句柄