首页 > 系统相关 >进程 线程

进程 线程

时间:2023-08-17 17:23:22浏览次数:38  
标签:多线程 程序 独立 线程 进程 执行

个程序至少有一个进程,一个进程至少有一个线程. 线程的划分尺度小于进程,使得多线程程序的并发性高。 另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。线程在执行过程中与进程还是有区别的。   每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。   从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。 这就是进程和线程的重要区别。进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.   进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。如果有兴趣深入的话,我建议你们看看《现代操作系统》或者《操作系统的设计与实现》。对就个问题说得比较清楚。

标签:多线程,程序,独立,线程,进程,执行
From: https://www.cnblogs.com/wangprince2017/p/17638223.html

相关文章

  • 爬虫速度翻倍!多线程技术助你提升批量爬虫采集效率
       今天要和大家分享一些关于如何利用多线程技术提升批量爬虫采集效率的实用技巧。如果你也在面对大量数据采集任务的时候疲于奔命,那么这些经验对你来说将非常有帮助。废话不多说,让我们开始吧!1.多线程是什么?——理解多线程的概念多线程是指在一个程序中同时运行多个......
  • Linux进程和计划任务管理
    正在工作的程序叫做进程父进程和子进程进程之间可能存在父子进程关系,父进程是对子进程进行管理,子进程是对客户端进行相应,进程在执行的时候往往是以不同用户的身份进行执行,主进程可能是以管理员的身份,子进程可能以普通用户的身份。#####子进程子进程为了安全一般使用普通用户(称为程......
  • Kubernetes守护进程集 DaemonSet
    守护进程集DaemonSet守护进程集也有副本数概念,但是副本数概念并不是通过配置清单的方式人为去定义的,他是靠你当前集群的节点个数,比如我当前集群之前安装集群安装的网络插件calico[root@k8s-master1deployment]#kubectlgetpods-nkube-systemNAME......
  • SDL 线程创建(SDL_LockMutex / SDL_UnlockMutex、SDL_CondWait / SDL_CondSignal)
     SDL_mutex*s_lock=NULL;SDL_cond*s_cond=NULL;intthread_work(void*arg){ SDL_LockMutex(s_lock); printf("[thread_work]in.\n"); Sleep(5000); printf("[thread_work]好了,知道了,我刚刚去玩了5秒,我直接SDL_CondWait把锁给你我自己睡觉去了。你拿到锁......
  • 工作中怎么使用线程池
    8个Java线程池最佳实践和坑! 1、正确声明线程池线程池必须手动通过 ThreadPoolExecutor 的构造函数来声明,避免使用Executors 类创建线程池,会有OOM风险。Executors 返回线程池对象的弊端如下(后文会详细介绍到):FixedThreadPool 和 SingleThreadExe......
  • 线程安全的集合
    Java的集合框架提供了许多集合类,其中有些是线程安全的,有些是非线程安全的。以下是一些线程安全的集合类:1.Vector:Vector是线程安全的动态数组类,与ArrayList类似,但它是同步的。2.Stack:Stack类是Vector的一个子类,它实现了一个后进先出的堆栈。3.Hashtable:Hashtable是一......
  • 多线程的“锁”
    其实,很多初学者(包括我自己)初期学习多线程时都被视频带偏了...虽然我始终认为培训班的视频是最适合非科班零基础入门的,但是在多线程方面,无一例外都讲得比较糟糕。感触很深的一点是:很多新手觉得多线程难,并不是因为volatile、ReentrantLock或者Executor线程池,而是从一开始就没弄明白......
  • qt 线程
    qt线程创建有两种方式:1、信号槽形式2、继承QThread形式。这里记一下信号槽形式。参考:https://blog.csdn.net/douzhq/article/details/104156580worker.h1#ifndefWORKER_H2#defineWORKER_H34#include<QObject>5classWorker:publicQObject6{7Q......
  • jmeter详解-线程组详解(1)-Thread Group
    Jmeterplugin插件的分类StandardSet组件:对线程组进行了扩展,扩充了许多丰富图表的监听器,可以用Jmeter来监控服务器ExtrasSet组件:支持远程监控,图表展示更加丰富ExtraswithLibsSet组件:提供对JSON的支持,新增了JMS取样器WebDriverSet组件:与WebDriver进行了集成,进行自动化测......
  • c++的线程初探-2
    (目录)一、条件变量条件变量是一种线程同步机制。当条件不满足时,相关线程被一直阻塞,直到某种条件出现,这些线程才会被唤醒。C++11的条件变量提供了两个类:condition_variable:只支持与普通mutex搭配,效率更高。condition_variable_any:是一种通用的条件变量,可以与任意mutex搭配(包......