`
周凡杨
  • 浏览: 234563 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

多线程篇之一 概念与原理

阅读更多

一:线程

线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。线程是独立调度和分派的基本单位。线程可以操作系统内核调度的内核线程,如Win32线程;由用户进程自行调度的用户线程,如Linux Portable Thread;或者由内核与用户进程,如Windows 7的线程,进行混合调度。同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等。但同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage)。一个进程可以有很多线程,每条线程并行执行不同的任务。在多核或多CPU,或支持Hyper-threading的CPU上使用多线程程序设计的好处是显而易见,即提高了程序的执行吞吐率。在单CPU单核的计算机上,使用多线程技术,也可以把进程中负责IO处理、人机交互而常备阻塞的部分与密集计算的部分分开来执行,编写专门的workhorse线程执行密集计算,从而提高了程序的执行效率。     【摘自维基百科】

 

说明:

   上面线程概念,只是书面的了解一下线程是什么以及线程的范畴。那摘要一下,其中的重点或需要清楚的注意的点:

  • 线程【范畴】<进程【范畴】, 线程的派生可以是进程,也可以是线程(一个线程可以创建和撤销另外一个线程),但线程本身的调度和管理由进程负责完成。
  • 线程是操作系统的运算调度的最小单位
  • 一个进程可以并发多个线程,去执行多个不同的任务。
  •  同一个进程中的多条线程之间共享进程中的全部系统资源 

二:线程具有状态

线程有四种基本状态,分别为:

  • ·派生:线程在进程内派生出来,它即可由进程派生,也可由线程派生。
  • 阻塞(Block):如果一个线程在执行过程中需要等待某个事件发生,则被阻塞。
  • 激活(unblock):如果阻塞线程的事件发生,则该线程被激活并进入就绪队列。
  • 调度(schedule):选择一个就绪线程进入执行状态。
  • 结束(Finish):如果一个线程执行结束,它的寄存器上下文以及堆栈内容等将被释放。

         
 

            图1: 线程的状态与操作图

 

 

参考资料:

   http://www.ibm.com/developerworks/cn/java/multithreading/

   http://zh.wikipedia.org/wiki/%E7%BA%BF%E7%A8%8B

   http://www.ruanyifeng.com/blog/2013/04/processes_and_threads.html

   http://www.qnx.com/developers/docs/6.4.1/neutrino/getting_started/s1_procs.html

   http://www.cnblogs.com/rollenholt/archive/2011/08/28/2156357.html

   http://www.baike.com/wiki/%E7%BA%BF%E7%A8%8B

 

   

  • 大小: 7.2 KB
0
0
分享到:
评论

相关推荐

    java多线程编程实战指南 核心篇 代码

    《Java多线程编程实战指南(核心篇)》以基本概念、原理与方法为主线,辅以丰富的实战案例和生活化实例,并从Java虚拟机、操作系统和硬件多个层次与角度出发,循序渐进、系统地介绍Java平台下的多线程编程核心技术及...

    单线程与多线程

    相比之下,多线程允许一个程序有多个执行流,每个线程可以独立地执行任务,从而提高了程序的并发性和响应能力。例如,一个线程可以负责用户的界面交互,另一个线程则负责后台数据处理,两者互不影响。多线程在资源...

    java多线程基础篇讲解

    总之,Java多线程基础篇讲解涵盖了多线程编程的基本原理和实践,通过学习这些内容,开发者可以掌握如何在Java环境中创建和管理线程,以及如何优化多线程程序以充分利用系统资源,从而编写出高效的并发应用程序。

    多线程测试!!!!!!!!

    在IT领域,多线程是程序...总之,多线程是C#程序员必备的技能之一,理解其原理并熟练运用,能够编写出高效、健壮的应用程序。在实际项目中,根据需求选择合适的线程模型和同步机制,是提升程序性能和稳定性的重要手段。

    秒杀多线程 第1-4篇合集

    本系列文章由MoreWindows撰写,涵盖了多线程编程的多个方面,包括面试中经常出现的知识点、同步与互斥机制、原子操作以及多个经典案例。以下将详细解读文中提到的关键知识点。 一、多线程基础知识 在多线程编程中,...

    多线程文件下载c#链接库

    在IT行业中,多线程文件下载是提高网络应用程序性能的重要技术之一。特别是在C#编程语言中,通过利用多线程可以有效地并发下载大文件,从而显著减少下载时间。本篇文章将详细探讨“多线程文件下载c#链接库”这一主题...

    C#.NET多线程实例代码教程

    文档6篇可能详细解释了这些实例的背景、实现原理和应用场景,对于学习和提升多线程编程技能非常有帮助。 通过深入学习和实践这个教程,开发者不仅能理解多线程的基本概念,还能熟练运用到实际项目中,解决并发问题...

    Java多线程之基础篇(二).docx

    Java 多线程是Java语言中的一个重要特性,它允许程序同时执行多个任务,从而提高了程序的效率和响应性。在Java中,多线程的实现主要依赖于线程的并发执行,而不是操作系统级别的进程切换。虽然进程之间的隔离保护了...

    C#的多线程简介

    在本篇中,我们将深入探讨C#的多线程基础知识,包括线程的概念、多线程的实现方式以及多线程编程中需要注意的关键点。 ### 多线程的基本概念 在计算机系统中,多线程是指一个进程内可以同时运行多个线程。每个线程...

    深入浅出Java多线程.pdf

    本PDF文档涉及了Java多线程的全面介绍,分为基础篇、原理篇和JDK工具篇三个部分,旨在帮助读者深入了解Java多线程的概念、原理及实践应用。 #### 基础篇 **1. 进程与线程基本概念** - **进程**:是程序的一次执行...

    多线程之小球碰撞

    标题“多线程之小球碰撞”涉及到的是计算机编程中的多线程技术,结合描述中的博文链接,我们可以推测这篇文章可能是通过一个模拟小球碰撞的示例来讲解多线程编程的概念和实践。在这个场景中,每个小球可以代表一个...

    VC++多线程编程

    在本篇内容中,我们将深入探讨VC++环境下多线程编程的核心概念和技术细节,包括多线程的基本原理、线程管理以及线程间同步等。 #### 二、多线程的基本概念 ##### 2.1 进程与线程的概念 - **进程**:进程是操作...

    C#Socket多线程编程实例[收集].pdf

    多线程机制在套接字编程中的应用:在每个客户端与服务器端连接成功后,它们之间就建立一个线程。这样运用了多线程之后,客户端之间就不会相互影响,即使其中一个出了错误也不会影响到另一个。多线程机制的使用可以...

    VC多线程例程四及图解文档,测试windos支支持的线程数

    在Windows操作系统中,多线程编程是开发高效应用程序的关键技术之一。VC++,即Microsoft Visual C++,提供了强大的多线程支持,使得开发者能够利用多核处理器的优势,提高程序的并发性和执行效率。本篇文章将深入...

    深入浅出Java多线程程序设计

    在当今高性能计算环境下,多线程技术已成为提升软件性能的关键手段之一。《深入浅出Java多线程程序设计》旨在为读者提供一个系统全面地理解Java多线程机制的平台。通过本篇文章,我们将围绕Java多线程的核心概念、...

    多线程的那点儿事[收集].pdf

    多线程编程是软件开发中的核心技能之一,尤其是在并发处理和优化系统性能方面。这篇文章将对多线程的若干重要概念进行深入解析,包括优先级反转、多核编程、数据结构、锁机制、死锁避免以及调试技巧。 优先级反转是...

    Linux下的多线程编程

    Linux下的多线程编程是现代软件开发中非常重要的技术之一。了解线程的基础概念、优点和缺点、线程的结构、线程标识、线程的创建以及相关的管理函数对于开发高效、可靠的多线程应用程序至关重要。通过本篇文章的学习...

    Linux系统下的多线程编程入门.doc

    在Linux系统中,多线程编程是开发高效能应用程序的关键技术之一。线程,作为操作系统中的轻量级进程,提供了一种在同一进程中并发执行多个独立控制流的方式,从而实现了资源的共享和高效的并发处理。本篇文章将深入...

    intel cilk多线程编程语言学习

    本篇文章将详细介绍 Intel Cilk Plus 的基本概念、语法特点以及如何使用它来开发多线程应用程序。 #### 二、基础知识与预备条件 在深入学习 Intel Cilk Plus 之前,读者需要具备一定的 C 或 C++ 编程基础。这是...

    VC++ 线程优先级 示例程序

    在编程领域,线程是操作系统分配CPU执行时间...总之,VC++中的线程优先级管理是多线程编程的关键技术之一。通过“赛马”示例程序,开发者能直观理解线程优先级对程序执行顺序的影响,从而更好地设计和优化多线程应用。

Global site tag (gtag.js) - Google Analytics