通过
Task.Factory.StartNew创建线程有没有限制的,我的应用里用该方法开启多个线程,发现后面调用这个方法创建线程很慢很慢,这里是不是有什么限制,如何可以设置这些限制参数?
Task为线程池的封装模式。
池那就必定有限制,池可以设定大小。
如果每个线程是满载,那么最优值就是核的数量(如果核又做了线程的,那么再乘以该数值)。
本来这个意思就是系统的线程有多少你不要管。
你想要干嘛就干。够不够用是系统的系统。
有限制,直接设置ThreadPool的几个静态方法就可以了。
但默认情况下没人去改这个玩意,你最好确认这几点:1.你是在你所谓的StartNew的时候慢么?2.你为什么需要上k的线程来干活?这里是否可以考虑换种方式
1、Task用的是线程池,线程池的线程数量的有上限的,这个可以通过ThreadPool修改
2、Task.Factory.StartNew不是直接创建线程,创建的是任务,它有一个任务队列,然后通过任务调度器把任务分配到线程池中的空闲线程中,如果任务的数量比线程池中的线程多,线程池的线程数量还没有到达上限,就会创建新线程执行任务。如果线程池的线程已到达上限,没有分配到线程的任务需要等待有线程空闲的时候才执行。
我也才刚学不久,大概理解是这样的。