多线程内部情况(三种线程模型)
2018-02-01 14:56
246 查看
多线程内部情况(三种线程模型)
1.一对一模型
一般直接使用API或系统调用创建的线程均为一对一的线程。
由于许多操作系统箱子了内核线程数量,因此一对一线程会让用户的线程数量受到限制。许多操作系统内核线程调度时,上下文切换的开销较大,导致用户线程的执行效率下降。
2.多对一模型
多对一模型将多个用户线程映射到一个内核线程上,线程之间的切换由用户的代码来进行,因此相对于一对一模型,多对一模型的线程切换要快速许多。
多对一模型一大问题是,如果其中一个用户线程阻塞,那么所有的线程将都无法执行,因为此时内核里的线程也会随之阻塞。另外,在多处理器系统上,处理器的增多线程性能也不会有明显的帮助。但同时,多对一模型得到的好处是高效的上下文切换和几乎无限制的线程数量。
3.多对多模型
结合了多对一模型和一对一模型的特点,将多个用户线程映射到少数但不止一个内核线程上。
1.一对一模型
一般直接使用API或系统调用创建的线程均为一对一的线程。
由于许多操作系统箱子了内核线程数量,因此一对一线程会让用户的线程数量受到限制。许多操作系统内核线程调度时,上下文切换的开销较大,导致用户线程的执行效率下降。
2.多对一模型
多对一模型将多个用户线程映射到一个内核线程上,线程之间的切换由用户的代码来进行,因此相对于一对一模型,多对一模型的线程切换要快速许多。
多对一模型一大问题是,如果其中一个用户线程阻塞,那么所有的线程将都无法执行,因为此时内核里的线程也会随之阻塞。另外,在多处理器系统上,处理器的增多线程性能也不会有明显的帮助。但同时,多对一模型得到的好处是高效的上下文切换和几乎无限制的线程数量。
3.多对多模型
结合了多对一模型和一对一模型的特点,将多个用户线程映射到少数但不止一个内核线程上。
相关文章推荐
- boost中asio网络库多线程并发处理实现,以及asio在多线程模型中线程的调度情况和线程安全。
- boost中asio网络库多线程并发处理实现,以及asio在多线程模型中线程的调度情况和线程安全。
- java 多线程(一)---创建线程的三种方式Thread,Runnable,Callable与Future
- Java学习之多线程--创建线程的三种方式
- Java多线程之创建线程的三种方式比较
- 更加强健的线程模型,解决线程卡死,退出异常情况
- 更加强健的线程模型,解决线程卡死,退出异常情况
- 设计一个多线程程序如下:设计一个火车售票模拟程序。假如火车站要有100张火车票要卖出,现在有5个售票点同时售票,用5个线程模拟这5个售票点的售票情况(提示:利用多线程)
- 初学Java多线程:向线程传递数据的三种方法
- 线程模型、pthread 系列函数 和 简单多线程服务器端程序
- JAVA多线程实现的三种方式及内部原理
- 7. 初学Java多线程:向线程传递数据的三种方法
- java多线程编程之向线程传递数据的三种方法
- 确实进程内部运行线程情况
- C# ThreadPool 自定义线程管理池 实现多线程池管理 有助与开发多线程系统的线程运行情况监控。
- 6、线程的概念和多线程模型
- Java多线程:向线程传递参数的三种方法
- 更加强健的线程模型,解决线程卡死,退出异常情况
- Java的多线程编程模型2--怎样才线程安全
- Java多线程(三):线程栈模型与线程的变量