信号通信

一个进程向另一个进程发送一个信号来传递某种讯息,接受者根据接收到的信号进行相应的行为

kill -l   查看系统信号

kill  -sig  PID   向一个进程发送信号

关于信号

信号名称  信号含义   默认处理方法

SIGHUP  连接断开

SIGINT  CTRU-C

SIGQUIT CTRU-\

SIGTSTP CTRL-Z

SIGKILL 终止一个进程

SIGSTOP 暂停一个进程

SIGALRM 时钟信号

SIGCHLD 子进程状态改变时给父进程发出

python 发送信号

signal

os.kill(pid,sig)

功能: 发送信号

参数: pid 目标进程

sig 要发送的信号

import signal

signal.alarm(sec)

功能 : 向自身发送时钟信号 --》 SIGALRM

参数 : sec  时钟时间

* 进程中只能有一个时钟,第二个会覆盖第一个时间

同步执行 : 按照顺序逐句执行,一步完成再做下一步

异步执行 : 在执行过程中利用内核记录延迟发生或者准备             处理的事件。这样不影响应用层的持续执行。             当事件发生时再由内核告知应用层处理

* 信号是唯一的异步通信方法

signal.pause()

功能:阻塞等待接收一个信号

signal.signal(signum,handler)

功能: 处理信号

参数: signum  要处理的信号

handler 信号的处理方法

SIG_DFL  表示使用默认的方法处理

SIG_IGN  表示忽略这个信号

func     传入一个函数表示用指定函数处理

def func(sig,frame)

sig: 捕获到的信号

frame : 信号对象

信号量(信号灯)

原理 : 给定一个数量,对多个进程可见,且多个进程都可以操作。进程通过对数量多少的判断执行各自的行为。

multiprocessing --》 Semaphore()

sem = Semaphore(num)

功能: 创建信号量

参数: 信号量初始值

返回: 信号量对象

sem.get_value()  获取信号量值

sem.acquire() 将信号量减1  当信号量为0会阻塞

sem.release() 将信号量加1

进程的同步互斥

临界资源 :多个进程或者线程都能够操作的共享资源

临界区 : 操作临界资源的代码段

同步 : 同步是一种合作关系,为完成某个任务,多进程或者多线程之间形成一种协调,按照约定或条件执行操作临界资源。

互斥 : 互斥是一种制约关系,当一个进程或者线程使用临界资源时进行上锁处理,当另一个进程使用时会阻塞等待,直到解锁后才能继续使用。

Event  事件

multiprocessing  --》 Event

创建事件对象

e = Event()

设置事件阻塞

e.wait([timeout])

事件设置 当事件被设置后e.wait()不再阻塞

e.set()

清除设置 当事件设置被clear后 e.wait又会阻塞

e.clear()

事件状态判断

e.is_set()

Lock 锁

创建对象

lock = Lock()

lock.acquire() 上锁  如果锁已经是上锁状态调用此函数会阻塞

lock.release() 解锁

with lock:   上锁

....

....

解锁

想要看更多的课程请微信关注SkrEric的编程课堂

Skr-Eric的网络编程课堂(八)-- 信号通信、信号量、进程的同步互换和Lock锁相关推荐

  1. 脑残式网络编程入门(八):你真的了解127.0.0.1和0.0.0.0的区别?

    本文由"小姐姐养的狗"原创发布于"小姐姐味道"公众号,原题<127.0.0.1和0.0.0.0地址的区别>,收录时有优化和改动.感谢原作者的分享. ...

  2. Java网络编程(八)—— 组播和MulticastSocket

    Java网络编程(八)-- 组播和MulticastSocket 文章目录 Java网络编程(八)-- 组播和MulticastSocket 什么是组播 MulticastSocket类 总述 构造方 ...

  3. Netty网络编程第八卷

    Netty网络编程第八卷 整体架构 ByteBuf Channel EventLoop和EventLoopGroup ChannelFuture ChannelHandler和ChannelPipel ...

  4. java 学习笔记-网络编程(八)

    网络编程 标签:学习各种网络协议的桥梁 什么是计算机网络 计算机网络的作用:资源共享和信息传递. 计算机网络的组成: a) 计算机硬件:计算机(大中小型服务器,台式机.笔记本等).外部设备(路由器.交 ...

  5. 网络编程——第一篇 基础之进程线程

    在C#的网络编程中,进程和线程是必备的基础知识,同时也是一个重点,所以我们要好好的掌握一下. 一:概念 首先我们要知道什么是"进程",什么是"线程",好,查一下 ...

  6. 12篇学通C#网络编程——第一篇 基础之进程线程

    在C#的网络编程中,进程和线程是必备的基础知识,同时也是一个重点,所以我们要好好的掌握一下. 一:概念 首先我们要知道什么是"进程",什么是"线程",好,查一下 ...

  7. android之http协议编程(源码ppt),Android网络编程(八)源码解析OkHttp中篇[复用连接池]...

    1.引子 在了解OkHttp的复用连接池之前,我们首先要了解几个概念. TCP三次握手 通常我们进行HTTP连接网络的时候我们会进行TCP的三次握手,然后传输数据,然后再释放连接. TCP三次握手的过 ...

  8. python网络编程(八)

    单进程服务器 1. 完成一个简单的TCP服务器 from socket import *serSocket = socket(AF_INET, SOCK_STREAM)# 重复使用绑定的信息 serS ...

  9. 网络编程之信号(处理僵尸进程的终极办法)之初识信号捕捉器

    接着我们之前的管道所提出来的问题() 在创建子进程之后,子进程究竟何时终止????调用waitpid函数后还要无休止的等待子进程终止吗???",这显然会是一个问题.因为父进程往往与子进程一样 ...

最新文章

  1. 拼多多一度跌破发行价:已遭上海工商约谈 被要求自查自纠
  2. 数学建模学习笔记——聚类模型
  3. vant组件搜索并选择_Vue.js自定义弹层组件|vue仿微信/ios弹窗
  4. Day4 python基础
  5. SFB 项目经验-02-共存迁移-Lync 2013-TO-SFB 2015-规划02
  6. python贪吃蛇设计目标_基于 pygame 设计贪吃蛇游戏
  7. Object 及toString() 方法的重写
  8. C++11系列学习之七---------初始化列表
  9. java 程序增加 防盗_防盗Java EE –保护Java EE企业应用程序的安全
  10. vue 实现页面静态化
  11. android 3.0单元测试,Android Studio 3.0 gradle 3.0.0-beta2打破了Kotlin单元测试覆盖率?
  12. 力扣算法题—075颜色分类
  13. realme Pad通过认证:搭载7100mAh大容量电池
  14. AndroidStudio安卓原生开发_UI高级_RecyclerView_循环复用控件_代替ListView_GridView---Android原生开发工作笔记121
  15. 【问题】Nginx日志中request_body为空
  16. [译]Quartz.NET 框架 教程(中文版)2.2.x 之第五课 SimpleTrigger
  17. python坐标系教程_python Shapely使用指南详解
  18. 通过命令行安装silverlight4
  19. ADAPT-PT v8.0(房屋与停车场结构里的梁、板、楼板系统之先进后拉预力软件)
  20. node mysql菜鸟教程_Node.js Web 模块

热门文章

  1. Go调试利器-delve
  2. 判断数字是奇数还是偶数
  3. 主流waf非主流waf_通过黑客眼中的WAF
  4. 谁帮忙用C#实现下这个加解密函数
  5. 与计算机科学与技术相似的专业,【选专业】名称相似但实际千差万别的专业 谨防掉坑!...
  6. 短说社区论坛系统:活动模块功能介绍
  7. error: the following arguments are required: img, config, checkpoint
  8. 如何让信息化工程监理走向繁荣!
  9. K进制转换:二进制与十六进制
  10. html5 找妹子源码,搞笑GIF趣图:妹子一顿操作猛如虎,然后手中的球全部消失了...