fyi 1:UDF=用户定义(工作表)函数 FYI 2:XLL= Excel加载项(DLL - > XLL)

我正在使用来自Microsoft的Excel4()API在C / C ++中编写Excel的xll加载项。
链接: http://msdn.microsoft.com/en-us/库/ BB687835.aspx

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

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

伪代码:

Variant MyComplexUDF(Variant input1, Variant input2)
{
    Thread t1 = new WorkerThread(input1);
    Thread t2 = new WorkerThread(input2);
    t1.join();
    t2.join();
    return [t1.Result(), t2.Result()];
}
.

在表面上,这看起来还可以,但我不是DLL / XLL和线程上的专家。

p.s。我已经搜索了谷歌(高低)的答案,在此问题上找不到任何东西。

有帮助吗?

解决方案

您可以根据需要启动多个线程,然后等待它们。还可以在最新版本的API中支持Async UDF。您可以在 http://xll.codeplex.com 中找到一些示例。看看测试/ async.cpp: http://xll.codeplex.com/ sourceControl / changeet / view / 14528#139508

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top