首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多线程访问MapPoint?

多线程访问MapPoint?
EN

Stack Overflow用户
提问于 2010-11-30 21:51:47
回答 2查看 589关注 0票数 6

下午好,

正如我之前在另一篇文章中所说,我必须计算地图中某些点之间的大约800万最短时间/路径距离,这些点的坐标是已知的。问题是,虽然直线距离很容易(而且快速)计算,但有人告诉我,单线程应用程序在使用MapPoint计算直线距离时可能会遇到问题。问题是我对多线程一无所知...我目前在i7 - 720QM环境中工作,所以我想使用所有4个内核来进行这些计算…在C#或C++中有什么简单的方法可以做到这一点吗?

非常感谢。

EN

回答 2

Stack Overflow用户

发布于 2010-11-30 21:57:12

如果您是多线程的新手,那么我的建议是,从BackGroundWorker组件开始,然后逐步切换到更丰富的线程概念。

如果您使用的是..net 4.0,那么任务并行库将为您提供简单的入门方法。

请参阅下面的链接

TPL

BackGroundWorker

票数 3
EN

Stack Overflow用户

发布于 2010-11-30 22:31:39

这可能是我说的,这需要很长时间。MapPoint的COM API是单线程的。让它并行计算多个路由的方法是启动多个MapPoint,每个MapPoint都在自己的线程上。

因此,对于您的四核,您将启动2-3个线程。每个线程启动自己的MapPoint,然后使用它进行路由。您将不会在每个核心上拥有一个MapPoint。除了操作系统开销和I/O开销之外,如果您观察单个MapPoint计算路由,您会发现更高版本的部分内部是多线程的,并且可以占用大约1.5个内核(如果它们可用)。

还有很多问题需要注意。MapPoint自己的垃圾收集没有针对批量路由计算进行优化。最简单的解决方法是定期重新启动每个MapPoint应用程序(至少一天一次,但可能更频繁)。

此外,一些操作(文件打开似乎是主要的操作)不能同时被多个MapPoints调用。可能是因为他们试图打开相同的文件,但我没有进一步调查。为了避免这种情况,您需要实现自己的锁定机制。

Saurabh对MapPoint4的建议听起来不错:我还没有愤怒地使用.NET 4的多线程-我的.NET / .NET线程体验是在.NET 2上。

我不知道你的应用是什么,但你知道我销售的一个产品使用多处理器MapPoint来计算批量路线距离/时间……:-)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4314458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档