从多线程.net应用程序调用本机DLL中的tbb问题?
问题描述:
我们有一个本地的.dll,使用线程构建块4.4来执行一些HPC类型的计算来管理并行性。这个.dll是从一个本身是多线程的.Net桌面程序调用的。我是tbb的新手,我想知道这种设置是否引发了一些问题。我使用tbb非常基本 - 我只是调用parallel_reduce来做一个特定的计算。我没有明确地设置tbb线程池;我依靠的是默认的初始化。从多线程.net应用程序调用本机DLL中的tbb问题?
当我们进行系统测试时,我们看到一些间歇性进程挂起。当我们单独测试本地dll时,我们没有看到这些,所以我期望一个最小的例子来证明这个问题很难构建。我希望有人更熟悉tbb,如果在这种使用场景中可能存在内在问题,我可能会提出建议。
顺便说一下,x86-64平台上的所有程序都在Windows 10上运行。
答
我的问题的答案似乎是没有问题;线程构建模块在这种情况下可以正常工作。消除parallel_reduce并没有改变行为,进一步的调查表明这个问题仅限于托管代码;根本与TBB没有任何关系。
你如何观察“间歇过程挂起”。 GUI是否延迟刷新?整个系统是否无响应?难道这不是由高CPU利用率和超额订购造成的吗? – Alex
@Alex - 两种行为:1,GUI没有响应而没有CPU活动。 2,GUI关闭,好像它崩溃了一样,但没有“此应用程序遇到错误”对话框。 – antlersoft
无法在本地代码中记忆错误(例如,由于编组不正确或编写了其他内容)会导致托管运行时的行为不稳定?你有没有试过与空身体运行parallel_reduce? – Alex