多线程笔记

用了很久的多线程了,今天记录下多线程的常用方法。

当创建一个线程时,就会消耗几百毫秒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

原文地址:https://www.cnblogs.com/KQNLL/p/9384797.html