职位:13
线程:6
加入时间:2021年3月
声誉:
0
我目前正在为RoboDK (c++, Qt)开发一个插件,它使用内部RoboDK API。将一些昂贵的计算任务卸载到单独的线程中是很好的。然而,似乎API本身不是线程安全的,至少一些方法调用崩溃,如果从另一个线程而不是主/GUI线程调用。是否有任何可用的文档,哪些API的方法是线程安全的,可以安全地从其他线程调用?或者不应该在不同的线程中使用API ?
致以最诚挚的问候,迈克尔
帖子:1929
线程:1
加入时间:2018年4月
声誉:
101
好问题……理论上,通过插件接口(c++, Qt)的RoboDK API不支持多线程。但是,您应该能够使用插件接口的一些功能而不会出现问题。
例如,您应该对SolveFK没有问题,另一方面,SolveIK可能会出现问题。我们可以使其他函数线程安全。
如果你能告诉我们更多你需要加快的细节,我们也许能更好地帮助你。
职位:13
线程:6
加入时间:2021年3月
声誉:
0
我在一个空间站和一个程序中添加了大量的目标,所以我认为这些操作不能从不同的线程中完成。
这并不是什么大问题,更像是UI在加载目标时变得无反应。我已经使用QApplication::processEvents();定期调用,以便至少有一个进度条不时得到更新。我只是在想是否有另一种(更好的?)方法来做到这一点,这种方法甚至可能允许将来并行化程序生成。但是目前单线程性能仍然足够好(在程序中隐藏指令和目标等优化已经应用)。