首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Linux之进程信号(上)

生活中有各种各样的信号,比如:闹钟、红绿灯、上下课铃声……我们可以知道信号产生时对应的要做些什么,幼儿园的小朋友也明白红灯停、绿灯行的道理。 但是,人是怎么识别出这些信号的呢?人是只有通过认识,才能产生行为:有人通过教育的手段让我们在大脑里记住了红绿灯属性及其对应行为。 但是,当信号产生时,我们并不是总能及时去处理这个信号。信号的发生是随时的(异步),但是我们去处理信号并不都是即时的。因为,我们在信号来临时可能会有其他更重要的事情要做(优先级更高的事情),所以从信号发生到信号被处理中间会有一个时间窗口,当然我们在未处理这个信号时需要将这个信号记录下来,等能处理时再处理。 当我们处理信号时,处理信号的方式也是有所不同的(不同的信号有不同的处理方式,不同的人对对同一个信号的处理方式也可能不同,相同的人对相同的信号在不同的场景下处理信号方式也可能不同)。处理信号的方式大致分为以下三种:

02

c++ 跨平台线程同步对象那些事儿——基于 ace

ACE (Adaptive Communication Environment) 是早年间很火的一个 c++ 开源通讯框架,当时 c++ 的库比较少,以至于谈 c++ 网络通讯就绕不开 ACE,随着后来 boost::asio / libevent / libev … 等专门解决通讯框架的库像雨后春笋一样冒出来,ACE 就渐渐式微了。特别是它虽然号称是通讯框架,实则把各个平台的基础设施都封装了一个遍,导致想用其中一个部分,也牵一发而动全身的引入了一堆其它的不相关的部分,虽然用起来很爽,但是耦合度太强,学习曲线过于陡峭,以至于坊间流传一种说法:ACE 适合学习,不适合快速上手做项目。所以后来也就慢慢淡出了人们的视线,不过对于一个真的把它拿来学习的人来说,它的一些设计思想还是不错的,今天就以线程同步对象为例,说一下“史上最全”的 ACE 是怎么封装的,感兴趣的同学可以和标准库、boost 或任意什么跨平台库做个对比,看看它是否当得起这个称呼。

01
领券