在邮箱处理器循环中,我从先前存储在此类集合中的阻塞集合中读取项目。由于我使用相同的循环来写入此类集合,因此我需要将其作为线程启动。
async { process(queue.Take()) } |> Aysync.Start
我的整个代码的执行速度很慢(相对而言),我怀疑原因是我启动的新线程,尽管我启动了线程池
let toto = ThreadPool.SetMinThreads(300,300)
争论点可能在这里的另一个提示是,如果我仅在队列为空时启动(并锁定整个部分)),我的运行时间差异很大,从 350 毫秒到 7 秒,而如果不这样做,它会保持在 5- 10 秒。
我的问题是:
- 无论如何我可以在这里加速线程的创建
- 是否有一些结构已经可以在邮箱处理器中使用这种情况(消费者/生产者?)?