co_context icon indicating copy to clipboard operation
co_context copied to clipboard

A coroutine framework aimed at high-concurrency io with reasonable latency, based on io_uring.

Results 10 co_context issues
Sort by recently updated
recently updated
newest added

```c++ #include #include "co_context/io_context.hpp" co_context::task func() { co_return 6; } int main() { co_context::io_context ctx; ctx.co_spawn([]() -> co_context::task { while (true) { auto x = co_await func(); std::cout

gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/11/lto-wrapper OFFLOAD_TARGET_NAMES=nvptx-none:amdgcn-amdhsa OFFLOAD_TARGET_DEFAULT=1 Target: x86_64-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.4.0-1ubuntu1~22.04' --with-bugurl=file:///usr/share/doc/gcc-11/README.Bugs --enable-languages=c,ada,c++,go,brig,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-11 --program-prefix=x86_64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls...

compiler-compat
compile-error

### What happened + What you expected to happen 想使用co_context改造之前基于muduo写的小项目,对co_context如何发请求还不太熟悉。 使用muduo发送请求时,函数声明如下 SendRequest(const std::string &ip, int port, const void *buf, size_t buf_len, Callback res_cb, Callback timeout_cb, double time); 包括收到响应后如何处理,超时如何处理两方面。 在看co_context的example后,不太明白使用co_context应该如何处理。 所以可以添加一个发送请求并有超时处理的实例代码嘛

documentation

我今天在学习`io_uring`时,发现其设计与我在用户态实现的异步IO几乎完全一致。进程间的异步IO是为了实现异步远程函数调用: 1. 在两个进程之间通过共享内存的方式传输数据 2. 共享内存被分为两个区域,A进程可读可写但B进程只读(类似io_uring的SQ);A进程可读但B进程可读可写(类似io_uring的CQ) 3. 这两个队列是单生产者、单消费者模型,提供无锁接口,内部使用内存屏障做同步 4. 当A进程发起RPC时,需要将参数以及要调用的函数ID写入到共享内存中,B进程在通过某种方法监测到有调用发生时,就会从共享内存中提取数据然后调用函数,之后将函数返回值写入到CQ 5. A进程与B进程可以通过用户态中断(可以理解为signal机制,但是不需要Linux 内核参与,而是硬件实现的跨核中断)相互进行通知。(这样实现出来的就类似于io_uring的中断驱动机制) 6. A进程和B进程也可以通过轮询的方法监测共享内存,类似于io_uring的轮询模式 7. A进程异步,B进程轮询监测内存,类似于io_uring的内核轮询模式 请问我该如何适配co_context,时其支持我的设计方案呢?如果您方便的话,我想参考一下您的论文,如果不方便公开的话,可以发送到我的邮箱:`[email protected]`

# 场景描述 我在同一个进程里面设计了两个线程A和B,其中A负责加密运算,B负责处理HTTP请求。 B是使用协程实现的高并发WEB服务器,A是一个死循环,一直等待B的数据。B在最终将数据发送给客户端之前,都需要将数据发送给A线程,由A线程进行加密。由于A是计算密集型的,因此使用协程反而会导致效率下降。A线程在加密完成之后再将数据发给B线程,由B线程将数据发送给客户端。 请问在这种情况下该如何实现呢?

![image](https://github.com/Codesire-Deng/co_context/assets/94288976/b2312652-82ba-402d-8dea-a1d3de259fc9) 环境是wsl ubuntu20.04, 不知道这个头文件是包含在那个包里的, 安装了好几个Linux-header都没有这个头文件

kernel-compat
done
compile-error

"由于内置动态内存分配,基于协程的异步框架可能不是性能的最优解,如果你正处于类似 30ns 延迟的极端性能场景,且不在乎编程复杂度,推荐关注 sender/receiver model,而无需尝试协程”, 老师,我目前的场景就是极致的最求性能,那么这个 sender/receiver model应该是怎么玩呢?有没有对应的事例呢。谢谢

I think your project do well. And it has the newest feature both in C++ and the OS. But one important feature `modules` in `C++20` is missed. I think it's...

## 问题背景 我正在学习协程的内容,我参照 example 中的例子尝试用 co_context 库写了一个 echo_client 和 echo_server,其中 echo_client 借鉴了 [muduo](https://github.com/chenshuo/muduo/blob/master/examples/pingpong/server.cc) 中的例子,并想基于此和 [muduo](https://github.com/chenshuo/muduo/tree/master) 进行性能对比,但程序运行结果和预想的不一致。 ## 问题描述 我的运行环境为:阿里云 ECS 云服务器,2核(vCPU) 2GiB,Ubuntu 22.04,g++ 11.4.0 muduo 的实现代码链接为 https://github.com/chenshuo/muduo/tree/master/examples/pingpong 使用 muduo 中提供的...

### What happened + What you expected to happen co_context使用的mimalloc动态库 ``` if (CO_CONTEXT_USE_MIMALLOC) target_link_libraries(co_context PUBLIC mimalloc) endif() ``` 在一些生产环境的机器上安装mimalloc动态库比较困难,可以增加使用静态库的编译方式吗 我尝试直接将cmake改为mimalloc-static没有编译成功 ``` if (CO_CONTEXT_USE_MIMALLOC) target_link_libraries(co_context PUBLIC mimalloc-static) endif() ```