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

进程与线程

时间:2023-07-11 16:32:57浏览次数:48  
标签:多线程 程序 独立 线程 进程 执行


简而言之,一个程序至少有一个进程,一个进程至少有一个线程. 
线程的划分尺度小于进程,使得多线程程序的并发性高。
另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
线程在执行过程中与进程还是有区别的。每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。

进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.
线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.
一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.

进程和线程的主要差别在于它们是不同的操作系统资源管理方式。进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程之间没有单独的地址空间,一个线程死掉就等于整个进程死掉,所以多进程的程序要比多线程的程序健壮,但在进程切换时,耗费资源较大,效率要差一些。但对于一些要求同时进行并且又要共享某些变量的并发操作,只能用线程,不能用进程。

标签:多线程,程序,独立,线程,进程,执行
From: https://blog.51cto.com/u_16185524/6689485

相关文章

  • zabbix自动发现与监控内存和CPU使用率最高的进程,监测路由器
    使用snmp采集信息snmp安装及使用 windows2008设置snmphttps://jingyan.baidu.com/album/3d69c5515e56b3f0cf02d7bf.html?picindex=1路由器配置snmphttps://wenku.baidu.com/view/e08c6f1583d049649a665828.html 一、开启snmp服务,参考网站:router(config)#snmp-servercommuni......
  • 唯一进程限制(Python)
    一、序在一些条件下,一个设备只需要运行一个进程,Python打包的exe只能运行一次的情况二、实现思路获取所有进程,判断是否已经有了该线程。没有输出1,有输出0三、实现代码实现代码defonlyOneSelf():pids=psutil.pids()#获取所有进程PIDlist=[]......
  • 线程阻塞案例分析
    线程阻塞案例分析一.Jstack打印快照1.jmeter运行压测脚本2.用jstack打印快照,下载到本地jstack112759>log1.txtjstack112759>log2.txtjstack112759>log3.txt3.在本地搜索是否有blocked关键字二.分析代码1.下载源码文件cn.testfan.perf.beihe.pinter.http.Cas......
  • 进程通信之套接字(TCP)
    1、服务器端1#include<stdio.h>2#include<sys/socket.h>//套接字3#include<netinet/in.h>4#include<string.h>5#include<stdlib.h>6#include<arpa/inet.h>//字节序转换7#include<unistd.h>89//可以正常运行了;1011#def......
  • C# 进程间通过内存映射文件通信
    内存映射文件(Memory-mappedfiles)是一种很好的进程间通信方式,它暴露了底层的细节,具有很强的扩展性以及性能。这里展示一个利用内存映射文件制作的变量同步工具。该工具当前存在的问题是:每次会同步变量的所有字段,不能针对某个字段进行同步。没有使用双缓冲,超出64位的字段......
  • Zephyr入门教程 2 线程
    RTOS的必要性当你开始增加你的嵌入式应用的功能时,在单一的主循环和一些中断例程中做所有的事情变得越来越难。通常情况下,下一级的复杂性是某种状态机,你的电子设备的输出会根据这个(内部)状态而改变。如果你需要能够同时操作多个复杂的输入和输出呢?一个很好的例子是TCP/IP连接,通过这......
  • 堆垛机西门子PLC程序+输送线程序+触摸屏程序。 物流仓
    堆垛机西门子PLC程序+输送线程序+触摸屏程序。物流仓储。涵盖通信,算法,运动控制,屏幕程序,可电脑仿真测试。实际项目完整程序。西门子S7-1200+G120+劳易测激光测距博途V15.1编程采用SCL高级编程语言。无加密。延申科普:物流仓储是一个涉及到供应链管理和仓库操作的领域。它涵盖了从货......
  • 线程安全和可重入
    线程安全和可重入线程安全定义如果一个函数被多个线程并发执行时,这个函数不会出现异常,则称这个函数是线程安全的。线程安全的破坏如果这个函数被多个线程调用时,可能会修改同一个资源,则就可能破坏线程安全。例如,函数访问全局变量:#include<thread>#include<stdio.h>in......
  • electron 和 react 进程通信
    现在有个需求,我想要使用react选择上传文件,获取文件路径在浏览器里面调用antdesign的upload组件是做不到的,只能获取文件名由于浏览器的安全限制,无法获取文件的完整路径。如果需要获取文件的完整路径,可以考虑使用Electron等桌面应用程序开发框架,或者使用ActiveX控件等......
  • Android 返回UI线程几种方法
    runOnUiThread()方法:在Activity或Fragment中,可以使用runOnUiThread()方法来在UI线程上运行代码。它接受一个Runnable对象,将其提交到UI线程的消息队列中执行。例如:runOnUiThread{//在UI线程上执行代码}Handler和post()方法:你可以使用Handler......