【发布时间】:2019-03-14 17:49:52
【问题描述】:
对 C# 相当陌生。我有 12 个 Oracle 数据库,每个数据库大约有 10000 多个模式。 我想在每个模式中运行一个多线程进程(比如查询或脚本)。
如果我:ThreadPool.SetMaxThreads(100,<not really sure what to put here>),我很可能会立即使用 100 个连接访问 DB1。
我想一次将负载分散到每个 DB 最多 10 个线程/连接,但总体上可能有 100 个运行。我知道我不能拥有 ThreadPool1、Threadpool2 等。
最好的处理方法是什么?
任何见解表示赞赏! --谢谢!
【问题讨论】:
-
ThreadPool中的线程数并不决定您正在执行多少并发工作。为什么不为每个数据库创建一个类,然后处理那里使用的并发连接数? -
@Zer0 - 这可能是我的问题的根源。我不知道如何限制线程池之外的线程。什么可以防止 DB1 级烧毁分配?当我继续搜索时,我确实找到了这个(我现在正在阅读:)albahari.com/threading/#_Thread_Pooling也许我很快就会在这里有更好的理解。感谢您的回复!
标签: c# multithreading oracle threadpool