进程和线程

进程和线程的区别:

(1) 进程是资源的分配和调度的一个独立单元,而线程是CPU调度的基本单元。

(2) 同一个进程中可以包括多个线程,并且线程共享整个进程的资源,一个进程至少包括一个线程。

(3) 进程结束后她拥有的所有线程都将销毁,而线程的结束不会影响同个进程中的其他线程的结束。

(4) 线程是轻量级进程,它的创建和销毁所需要的时间比进程小很多。

(5) 线程中执行一般都要进行同步和互斥,因为他们共享同一进程的所有资源。

(6) 线程有自己的私有属性TCB,线程id,寄存器等,而进程也有自己的私有属性进程控制块PCB,这些私有属性是不被共享的,用来标示一个进程或一个线程的标志。

进程间通信的方式

(1) 共享存储区通信

为了传输大量的数据,在内存中划出了一块共享存储区域,各个进程可通过对该共享区的读或写交换信息,实现通信。这种通信方式属于高级通信,需要通信的进程在通信前,先向系统中申请获得共享内存区中的一个分区,并将其附加到自己的地址空间中,以便对其中的数据进行正常读、写,读写完成或不再需要时,将其归还共享存储区。

(2) 管道通信

所谓“管道”,是指用于连接一个读进程和一个写进程以实现他们之间通信的一个共享文件,又名pipe文件。向管道(共享文件)提供输入的发送进程(即写进程)以字符流形式将大量的数据送入管道;而接受管道输出的接收进程(即读进程)则从管道中接收(读)数据。由于发送进程和接收进程是利用管道进行通信的,故又称管道通信。

(3) 消息队列

以格式化的消息(message)为单位,将通信的数据封装在消息中,并利用操作系统提供的一组通信命令(原语),在进程间进行消息传递,完成进程间的数据交换。

(4) 信号量

本身不具有数据交换的功能,是通过控制其他通信资源(文件、外部设备)来实现进程间通信,本身是一种外部资源的标识。在此过程中负责数据操作的互斥与同步功能。

(5) socket通信

比如TCP,其实是两台主机上的进程在通信,通过socket实现的。

线程间通信的方式

(1) 共享变量

多个线程共同一个全局变量,以此实现线程间通信。

(2) 管道

使用java.io.PipedInputStream和java.io.PipedOutputStream进行通信。

这种更像是消息传递机制,就是通过管道,将一个线程中的消息发送给另一个线程。

(3) wait/notify

通过调用wait和notify方法进行线程间通信,以实现通知线程的状态发生改变。

(4) 锁机制

使用synchronized和Lock锁实现线程间通信,当对一个对象或代码块加上锁以后,也就通知了想要进入此代码块的其他的线程要进入阻塞状态。

参考:https://blog.csdn.net/zhou753099943/article/details/51771220

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux中的进程线程有以下几个区别: 1. 数据结构:在Linux中,线程是通过进程模拟出来的,没有真正意义上的线程数据结构。而在Windows中,操作系统为线程创建了thread_struct数据结构,因此有真正意义上的线程。 2. 执行流:在Linux中,每个线程实体对应着操作系统下的一条执行流,通过PCB(task_struct)来模拟。而用户态下创建的线程是通过线程库(pthread_struct)来进行管理。 3. 标识作用:在Linux中,轻量级进程ID(tid)对不同的线程起标识作用,操作系统在进行调度时使用tid。而进程ID(pid)对不同的进程起标识作用。在只有一个线程进程中,tid的值等于pid的值。 4. 线程私有部分:线程私有部分包括运行时栈、一组寄存器/硬件上下文/任务状态段等。 5. 多线程提高效率:多线程能够提高效率的原因是多核和单核环境下的不同。在多核环境下,多线程可以将庞大的任务分成若干份,并交给不同的线程进行处理,同时执行不同步骤的代码,从而提高效率。而在单核环境下,多线程并发执行,使用线程切换来提高整体代码的运行效率。 6. 进程线程的区别:进程程序运行的实例,是系统分配资源的基本单位,拥有独立的地址空间;线程进程中的一条执行流,是CPU调度基本单位,共享同一地址空间。创建和撤销进程的开销大于线程,不同进程间不会互相影响,而一个线程挂掉可以将整个进程挂掉。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值