对于Excel 2003,XLL中的UDF可以使用多个线程吗?

FYI 1:UDF =用户定义(工作表)函数FYI 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(变体input1,变体input2)
 {
    线程t1 =新的WorkerThread(input1);
    线程t2 =新的WorkerThread(input2);
     t1.join();
     t2.join();
     return [t1.Result(),t2.Result()];
 }

表面上,这似乎是好的,但我不是在DLL / XLL和线程的专家。

PS我已经search了谷歌(高和低)这个答案,并没有find关于此事的任何事情。

您可以根据需要启动任意多个线程,然后等待它们。 在最新版本的API中也支持asynchronousUDF。 你可以在http://xll.codeplex.comfind一些例子。 看看testing/ async.cpp: http ://xll.codeplex.com/SourceControl/changeset/view/14528#139508