concurrent_running
简介
是一个用于并发执行函数的工具库,特别适用于处理 IO 密集型任务,如网络请求、文件读写等操作, 并需要等待所有任务完成。通过并发执行可以显著提高程序的执行效率
concurrent_running 并发执行函数库
概述
concurrent_running
是一个用于并发执行函数的工具库,特别适用于处理 IO 密集型任务,如网络请求、文件读写等操作, 并需要等待所有任务完成。通过并发执行可以显著提高程序的执行效率。
功能特性
- ✅ 支持并发执行多个函数调用
- ✅ 异常安全:如果某次调用失败,会等待其他调用完成后抛出异常
- ✅ 高性能 :使用 copool 的 co_pool_execute_in 实现
- ✅ 支持两种调用模式:统一函数多参数 / 多函数多参数
API 文档
concurrent_running(function f, array params)
并发执行同一个函数,使用不同的参数。
参数:
f
(function): 要执行的函数params
(array): 参数数组,每个元素是一个数组,包含每次调用函数的参数
返回值:
array
: 结果数组,按照参数数组的顺序返回每次函数调用的结果
示例:
// 定义一个示例函数
int add(int a, int b) {
return a + b;
}
// 准备参数数组
array params = [
[1, 2], // 第一次调用: add(1, 2)
[3, 4], // 第二次调用: add(3, 4)
[5, 6] // 第三次调用: add(5, 6)
];
// 并发执行
array results = concurrent_running.exec((: add :), params);
// results = [3, 7, 11]
concurrent_running_ex(array funcAndParams)
并发执行不同的函数,支持为每个函数指定不同的参数。
参数:
funcAndParams
(array): 函数和参数的组合数组,每个元素包含:[0]
(function): 要执行的函数[1]
(array): 该函数的参数数组
返回值:
array
: 结果数组,按照输入数组的顺序返回每次函数调用的结果
示例:
// 定义示例函数
int multiply(int a, int b) {
return a * b;
}
int subtract(int a, int b) {
return a - b;
}
// 准备函数和参数的组合
array funcAndParams = [
[(: add :), [10, 20]], // 调用 add(10, 20)
[(: multiply :), [3, 7]], // 调用 multiply(3, 7)
[(: subtract :), [100, 30]] // 调用 subtract(100, 30)
];
// 并发执行
array results = concurrent_running.exec_ex(funcAndParams);
// results = [30, 21, 70]