热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

Linux到底有没有线程之我见

最近开始转向Linux开发,需要用到多线程。上网一查,有的人说Linux没有线程只有进程,有的人说Linux当然有线程,没有线程pthread库是干吗的?NPTL又是干嘛用?个人

 最近开始转向Linux开发,需要用到多线程。上网一查,有的人说Linux没有线程只有进程,有的人说Linux当然有线程,没有线程pthread库是干吗的?NPTL又是干嘛用?

 

个人觉得,要看从哪个角度来看这个问题。对于一般应用软件开发人员的角度来看,既然能用pthread库来创建线程,以及可以处理线程间的通信,当然可以认为在Linux中线程肯定是存在的。

 

从目前Linux内核实现的角度来看,Linux当前应该还是采用的一对一模型,创建一个用户态空间的线程,在内核中会通过一个轻量级的进程来管理,线程调度相当于进程调度。当前Linux内核中,无论是创建一个线程还是一个进程都是会调用clone()系统调用,只不过是参数不同,创建线程的话clone()的参数是(CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND),其中CLONE_VM也指定了核心态空间中,此轻量级进程(即线程)和父进程共享地址空间,因此这个线程才可以访问父进程的地址空间。

 

因此,Linux和Windows的线程虽然实现不一样,但是应该可以大胆的说Linux是存在线程的,只是Linux的实现方式和Windows的不一样。至于说Linux的线程就是轻量级进程那只是从核心态空间的层面来看。

 


推荐阅读
  • linux进阶50——无锁CAS
    1.概念比较并交换(compareandswap,CAS),是原⼦操作的⼀种,可⽤于在多线程编程中实现不被打断的数据交换操作࿰ ... [详细]
  • 第七课主要内容:多进程多线程FIFO,LIFO,优先队列线程局部变量进程与线程的选择线程池异步IO概念及twisted案例股票数据抓取 ... [详细]
  • golang源码分析调度概述
    golang源码分析-调度过程概述本文主要概述一下golang的调度器的大概工作的流程,众所周知golang是基于用户态的协程的调度来完成多任务的执行。在Linux ... [详细]
  • 线程概念在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列指令序列”;一切进程至少都有一个执行线程;  进程  VS. 线程  ... [详细]
  • 主要用的线程函数:1.创建线程:12intpthread_create(pthread_t*thread,constpthread_attr_ ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • 线程漫谈——线程基础
    本系列意在记录Windwos线程的相关知识点,包括线程基础、线程调度、线程同步、TLS、线程池等。进程与线程理解线程是至关重要的,每个进程至少有一个线程,进程是线程的容器,线程才是真正的执行体,线程必 ... [详细]
  • 本文摘自JavaGuide。1、简单易学;2、面向对象(封装,继承,多态);3、平台无关性(Java虚拟机实现平台无关性);4、可靠性;5、安全性;6、支持多线程(C++语言没有内 ... [详细]
  • Linux 中使用 clone 函数来创建线程
    2019独角兽企业重金招聘Python工程师标准Linux上创建线程一般使用的是pthread库实际上libc也给我们提供了创建线程的函数那就是cloneintclone(i ... [详细]
  • Linux_多线程(进程与线程的联系_pthread库_线程创建_线程等待_线程正常终止_线程取消_线程分离_pthread_t与LWP)
    Linux_多线程(进程与线程的联系_pthread库_线程创建_线程等待_线程正常终止_线程取消_线程分离_pthread_t与LWP)-文章目录1.线程的定义,进程和线程 ... [详细]
  • 采用CreateThread()创建多线程程序
    本位转自:http:blog.csdn.netcbnotesarticledetails8277180在window环境下,Win32提供了一系列的AP ... [详细]
  • 近期看见一篇来自Intel的很有意思的分析文章,作者提到在他向45名与会的各公司程序员开发经理战略师提问“什么是实施并行编程的最大障碍”时,下面五个因素 ... [详细]
  • burp爆破线程设置多少_Linux中的线程局部存储解析
    在Linux系统中使用CC进行多线程编程时,我们遇到最多的就是对同一变量的多线程读写问题,大多情况下遇到这类问题都是通过锁机制来处理,但这 ... [详细]
  • 本文总结了Linux下多线程执行shell脚本的4种方法,包括切换到工作目录执行、使用绝对路径执行、直接使用bash或sh执行。同时介绍了为什么需要加上"./"来执行脚本的原因。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
author-avatar
维尼饭爱nichkhun_774
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有