我正在使用SDK v 3.0在vb.net中为Quickbooks POS(版本9)编写一些简单的程序,特别是使用QBPOSXMLRPLib。部分程序需要为所有库存项目创建ItemInventoryQueryReq。收到所有150,000种产品的信息大约需要3分钟左右。该程序不会给QBPOS服务器cpu带来很大的压力,也不会压倒我们的千兆网络,所以我想也许我们可以通过使程序多线程,使部门按部门拆分并运行来加快速度多个查询请求同时进行。这是我第一次使用多个线程,但我认为我最终想出来了 - 主要是。
为了测试,我做了一些程序,可以获得两个部门的所有信息,每个部门有大约16,000个产品。所有的程序都有两个System.Threading.Thread的 - thread1和thread2。 Thread1从一个部门获得了项目,而thread2从另一个部门获得了这些项目。每个线程都有自己的QB RequestProcessor。
第一个程序同时运行了thread1和thread2。
Thread1.Start()
Thread2.Start()
Thread1.Join()
Thread2.Join()
第二个程序首先运行thread1,然后运行thread2。
Thread1.Start()
Thread1.Join()
Thread2.Start()
Thread2.Join()
每个程序运行大约需要45秒 - 导致每秒的项目数与原始程序大致相同(约150,000秒~200 +秒)。
所以我认为线程没有效果。但是,一时兴起,我制作了第三个程序,只运行了第1个程序,第四个程序只运行了第2个程序。当我同时运行第三个和第四个程序时,两个程序都在大约23秒内完成,实际上每个项目的数量增加了一倍。第二次收到。如何使用线程获得相同的速度提升?
为什么两个单独的程序同时运行的速度比一个带两个线程的程序快?我做错了吗?或者,对于QBPOS服务器处理来自不同程序与不同线程的查询的方式,这是否有更具体的内容?如果是这样,有没有办法欺骗QBPOS服务器更快?
非常感谢任何帮助。