0

仅供参考 1:UDF = 用户定义(工作表)函数 仅供参考 2:XLL = Excel 插件(DLL -> XLL)

我正在使用 Microsoft 的 Excel4() API 在 C/C++ 中为 Excel 编写 XLL 加载项。
链接:http: //msdn.microsoft.com/en-us/library/bb687835.aspx

我有一个“复杂”的任务,我想使用多个线程来获得更好的性能。虽然我知道 Excel 2003 中的计算是单线程的,但我想知道我的 UDF 是否可以 (a) 产生线程来完成工作,(b) 等待线程完成,以及 (c) 返回结果。

非常清楚,我不会做任何 Excel 自动化,也不会在线程中调用 Excel4()。

伪代码:

变体 MyComplexUDF(变体输入 1,变体输入 2)
{
    线程 t1 = new WorkerThread(input1);
    线程 t2 = new WorkerThread(input2);
    t1.join();
    t2.join();
    返回 [t1.Result(), t2.Result()];
}

从表面上看,这看起来不错,但我不是 DLL/XLL 和线程方面的专家。

PS我已经在谷歌(高和低)搜索了这个答案,但找不到任何关于此事的信息。

4

1 回答 1

2

您可以根据需要启动任意数量的线程,然后等待它们。最新版本的 API 还支持异步 UDF。您可以在http://xll.codeplex.com中找到一些示例。看看 test/async.cpp:http: //xll.codeplex.com/SourceControl/changeset/view/14528#139508

于 2012-05-27T20:46:51.667 回答