当前位置:网站首页 > 编程语言 > 正文

阻塞队列最多几个进程(阻塞队列最多几个进程组成)



1.Linux进程

Linux进程间通信(6种)

信号、管道、共享内存、消息队列、信号量集、套接字

进程:动态的概念

进程可以做什么?

可以同时处理多任务,提高CPU的利用率

进程空间是独立的,是分配和调度资源的最小单位

进程是资源分配的最小单位

线程是CPU调度的最小单位

特殊进程:

0号进程:祖先进程

1号进程:初始化进程

僵尸进程:进程结束了,但是资源暂时没有被回收

孤儿进程:父进程比子进程先结束

会被特殊进程统一管理

linux系统规定,被1号进程管理

ubuntu做了更新,有一个专门的进程负责管理孤儿进程

进程

1)进程的创建:fork

2)获取进程ID:getpid

3)获取进程的父进程ID:getppid

4)在调用进程里面创建子进程:vfork

5)进程等待:wait、waitpid

6)进程的退出清理:exit、_exit、return、atexit

7)退出清理函数:atexit

8)在程序里面运行可执行程序:system、systrm(“clear”)

9)exec函数族:执行可执行的程序

execl、execlp、execle、execv、execvp、execvpe

1、信号:

信号:软件中断机制

指定信号处理方式:signal、sigaction

给任意进程发送任意信号:kill

给调用进程或线程发送sig信号:raise

在seconds秒之后给调用进程发送闹钟信号:alarm

2、管道:

创建一个用于多进程通信的数据通道(pipe-)无名管道:pipe

创建一个命名管道,名称pathname,权限是mode:mkfifo

管道:无名管道   有名管道

    父子进程   任意两个进程

     pipe     mkfifo

管道通信

无名:具有亲缘

有名:任意两进程

特点:单向、阻塞、缓冲

3、共享内存:

1)创建访问共享内存:shmget

2)获取键值:ftok

3)进程在使用的时候,映射到自己的进程空间:shmat

4)空间内容读写

5)不使用的时候,解除映射:shmdt

6)所有人都不使用,可以删除共享内存shmctl

4、消息队列:

1)创建消息队列:msgget

2)收发数据:msgrcv、msgsnd

3)删除消息队列:msgctl

5、信号量集:——》保护共享资源

1)创建信号量:semget

2)在访问共享资源前获取信号量:semop

3)在发文结束之后还原信号量

4)删除信号量:semctl

6、套接字:

epoll:

高性能

没有描述符限制

更高效事件通知机制

支持边缘触发和水平触发模式

select:

跨平台兼容性

简单易用

特定场景下的性能表现

小结:

1)信号:软件中断机制

2)管道:两个进程通信

3)共享内存:操作同一个共享内存区域

4)消息队列:发送消息,附带类型,根据类型读取消息

5)信号量:同步机制

6)套接字:实现不同设备通信

2.Linux线程

Linux线程间通信

共享内存、信号量、互斥锁、条件变量、管道、消息队列、套接字

1)锁机制:互斥锁、条件变量...

2)信号机制:

3)共享内存:

4)消息队列:

5)信号量:

线程的概念:

线程是轻量级的进程

进程:自己独立的进程空间

线程:没有独立的空间,多个线程共享进程资源

linux下线程被称作:pthread

进程:空间独立,通信麻烦,同步与互斥简单

通信:信号 管道 共享内存 消息队列 网络编程

同步与互斥:信号量集

线程:共享进程资源,通信简单,同步与互斥麻烦

通信:全局变量 信号

同步与互斥:互斥锁 条件变量 信号量

线程:

线程的创建:pthread_create

线程的等待:pthread_join

线程的取消:pthread_cancel

获取线程id:pthread_self()

线程的退出清理:pthread_cleanup_push、pthread_cleanup_pop

线程的同步与互斥:

同步与互斥的目的:保护共享资源

互斥:当一个公共资源同一时刻只能被一个进程或线程使用,多个进程或线程不能同时使用公共资源。如:当线程A在使用打印机时,其他线程都需要等待。

同步:两个或两个以上的进程或线程在运行过程中协同步调,按预定的次序运行。如:A任务的运行依赖B任务产生的数据。

互斥锁——》互斥

1)创建锁:pthread_mutex_init

2)在访问共享资源之前加锁:pthread_mutex_lock

3)访问结束之后解锁:pthread_mutex_unlock

4)都不使用,删除锁:pthread_mutex_destoy

条件变量——》同步

1)创建条件变量:pthread_cond_init

2)因为等待某个资源进入阻塞:pthread_cond_timedwait

3)资源可用的时候,发信号,打断阻塞:

pthread_cond_signal、pthread_cond_broadcast

4)删除条件变量:pthread_cond_destroy

信号量——》互斥

1)创建信号量:sem_init

2)在访问共享资源之前获取信号量:

sem_wait、sem_trywait、sem_timedwait

3)访问结束还原信号量:sem_post

4)删除信号量:sem_destroy

3.网络编程

网络编程的目的:是进程通信的方式

应用在不同设备之间的通信

socket套接字

TCP编程框架

基于连接的

1个服务端,多个客户端

客户端 函数 服务端 函数

创建套接字 socket 创建套接字 socket

绑定IP和端口 bind

监听 listen

请求连接 connect 等待连接 accept

发送数据 send/write 发送数据 send/write

接收数据 recv/read 接收数据 recv/read

断开连接 close 关闭 close

UDP编程框架:

无连接

客户端1 函数 客户端2 函数

创建套接字 socket 创建套接字 socket

绑定ip和端口 bind 绑定ip和端口 bind

接收数据 recvfrom 接收数据 recvfrom

发送数据 sendto 发送数据 sendto

关闭 close 关闭 close

网络编程实际应用

使用网络编程实现TCP一对一通信

TCP协议  基于连接的

服务器端       客户端

创建套接字      创建套接字

绑定IP和端口

监听

等待连接       连接服务器

收发数据       收发数据

关闭套接字      关闭套接字

使用网络编程实现UDP通信

UDP  无连接

客户端1         客户端2

创建套接字        创建套接字

绑定IP和端口       绑定IP和端口

收发数据         收发数据

关闭套接字        关闭套接字

TCP和UDP的区别

TCP:面向链接的传输层协议,数据是可靠的,数据是按照发送的先后顺序到达

UDP:无连接的传输层协议,可能出现数据丢失,数据乱序到达

简述TCP的三次握手

1)客户端发送连接请求

2)服务器应答

3)客户端确认

到此这篇阻塞队列最多几个进程(阻塞队列最多几个进程组成)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 生成范围内的随机整数(生成一个范围的随机数)2025-11-29 10:45:10
  • ppp什么意思(ppp什么意思网络流行语)2025-11-29 10:45:10
  • podoplanin(Podoplanin翻译)2025-11-29 10:45:10
  • 学籍认证码在哪里找(学籍认证码在哪里找出来)2025-11-29 10:45:10
  • 10进制转16进制 计算器(十六进制转换计算器)2025-11-29 10:45:10
  • linux安装yum命令在线安装(linux中yum安装)2025-11-29 10:45:10
  • latex如何设置字体并加粗(latex怎么设置字体)2025-11-29 10:45:10
  • 蓝牙地址怎么查定位华为(蓝牙地址怎么查定位华为手机位置)2025-11-29 10:45:10
  • udp广播包和单播包的主要区别(udp发送广播包)2025-11-29 10:45:10
  • 解决环形队列空间利用问题(解决环形队列空间利用问题的办法)2025-11-29 10:45:10
  • 全屏图片