用了很久的多线程了,今天记录下多线程的常用方法。
当创建一个线程时,就会消耗几百毫秒cpu,创建一些新的私有局部变量栈。每个线程还消耗(默认)约1 MB的内存。线程池通过共享和回收线程,允许在不影响性能的情况下启用多线程。
每个.NET程序都有一个线程池,线程池维护着一定数量的工作线程,这些线程等待着执行分配下来的任务。
线程池线程注意点:
1 线程池的线程不能设置名字(导致线程调试困难)。 2 线程池的线程都是background线程 3 阻塞一个线程池的线程,会导致延迟。 4 可以随意设置线程池的优先级,在回到线程池时改线程就会被重置。
通过Thread.CurrentThread.IsThreadPoolThread.可以查看该线程是否是线程池的线程。
使用线程池创建线程的方法:
- Task
- ThreadPool.QueueUserWorkItem
- Asynchronous delegates
- BackgroundWorker
Task.Factory.StartNew (Go);
//Go方法的参数data此时为空
ThreadPool.QueueUserWorkItem (Go);
//Go方法的参数data此时为123
ThreadPool.QueueUserWorkItem (Go, 123);
参考https://www.cnblogs.com/JoeSnail/p/6433290.html