我们正在设计一个应用程序,用户可以在其中设置同时运行的多个任务。我们使用 ThreadPool.QueueUserWorkItem 来设置任务运行。那部分运行良好。
我们确实有一个问题,这些任务会消耗 500MB 以上的内存。我们使用内存映射 I/O 来管理内存。仍然当用户设置 10+ 个任务同时运行时,线程池将启动所有这些任务,并且有时我们会耗尽内存并发生异常。我们可以很好地处理错误。
我想知道是否有办法在处理队列时考虑将消耗的内存,即保持任务排队直到存在足够的内存?我可以告知线程池我们将要求多少内存(我们可以粗略估计)吗?