问题描述
假设我们有一个很大的代码库和一个执行一些阻塞 IO 的函数 string blockRead()
。我希望将此函数更改为协程 my_task<string> coroRead()
并使用 clang 自动重构整个代码库以使用 co_await coroRead()
而不是 blockRead()
。当然,困难而乏味的部分是遍历调用图以协调所有调用函数。例如
block1.cc
#include "block_io.h"
int f1() {
auto x = blockRead();
return stoi(x);
}
block1.h
int f1();
block2.cc
#include "block1.cc"
int f2() {
return f1() + 1;
}
应该变成这样
coro1.cc
#include "coro_io.h"
#include "coro.h"
my_task<int> f1() {
auto x = co_await coroRead();
co_return stoi(x);
}
coro1.h
#include "coro.h"
my_task<int> f1();
coro2.cc
#include "coro1.h"
my_task<int> f2() {
co_return (co_await f1()) + 1;
}
clang 生态系统有点混乱,所以我希望得到一个方向,哪些 API 可能有助于解决这个问题。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)