问题:
有没有办法强制任务并行库同时运行多个任务?即使这意味着通过在每个核心上添加所有上下文切换来使整个过程运行得更慢?
背景:
我对多线程相当陌生,所以我可以使用一些帮助。我最初的研究结果并不多,但我也怀疑我是否知道要搜索什么。也许在多线程方面更有经验的人可以帮助我更好地理解 TPL 和/或找到更好的解决方案。
我们公司正计划在所有用户的机器上部署一个软件,每天几次连接到中央服务器,并将一些文件和MS Access数据同步回用户的机器。我们想先对这个概念进行负载测试,看看 Access DB 如何支持大量同时连接。
我的任务是编写一个 .NET 应用程序,其行为类似于客户端应用程序(与网络位置连接和同步),但同时在多个线程上执行此操作。
我已经熟悉了任务并行库 (TPL),因为这似乎是处理多线程的最佳(最新)方法,并且可以轻松地从每个线程获取返回值。但是,据我了解,TPL 决定如何运行每个“任务”以尽可能快地执行,在可用内核之间分配工作。因此,假设我想在 2 核机器上运行 30 个同步作业……TPL 将在每个核心上按顺序运行 15 个。这意味着我的负载测试只会同时使用最多 2 个连接来访问 Access DB。我想通过大量同时连接来访问数据库。