摘要:
环境 Ubuntu 20.04.2 64位 软件包安装 通过apt-get 命令可以直接安装Libevent,这种方式方便快捷,省时省力。 安装命令如下: sudo apt-get install libevent-dev 源码安装 源码安装一般有如下步骤: ./configure make mak 阅读全文
摘要:
线程同步 当多个线程同时对一个共享数据进行操作时,会导致数据竞争,下面例子展示了数据竞争的情况: 1 #include <pthread.h> 2 #include <stdio.h> 3 #include <stdlib.h> 4 #include <string.h> 5 #include <u 阅读全文
摘要:
线程的概念 线程是指程序中的一条执行路径。在一个进程中,至少有一个线程,称为主线程,通过主线程可以派生出其他子线程。 Linux系统内核只提供了轻量级进程(light-weight process)的支持,并未实现线程模型。Linux本身只有进程的概念,而其所谓的“线程”本质上在内核里仍然是进程。进 阅读全文
摘要:
布局系统 每个UI界面都是由大量的界面元素构成的,在window编程中,这些界面元素的最小单位被称为控件,而布局则是这些控件在界面的相对位置和大小。 目前SOUI支持锚点布局、线性布局、网格布局,下面会依次介绍这几种布局方式。 锚点布局 所谓锚点布局,是定义了一个控件的坐标位置,这个位置往往不是一个 阅读全文
摘要:
进程关系 进程组 进程组概念 在 Linux 中,进程组是一个或多个进程的集合,简称PGID。每个进程都属于一个进程组,目的是为了便于对一组进程进行管理。通过将多个相关进程划分到一个进程组中,可以更方便地对他们进行控制,像发送信号、终止等操作。 当父进程创建子进程时,子进程会默认加入父进程所属的组。 阅读全文
摘要:
POSIX 共享内存 POSIX 共享内存是一种在 Linux 系统上使用的共享内存机制,它允许多个进程可以访问同一个内存区域,从而实现进程间的数据共享。共享内存是可用IPC机制中最快的,使用共享内存不必频繁拷贝数据。但也需要注意,由于共享内存段中的数据可以被多个进程同时访问,因此需要在程序设计中考 阅读全文
摘要:
POSIX 消息队列 POSIX 消息队列可以认为是一个消息链表。进程(线程)可以往里写消息,也可以从里面取出消息。可以在不相关的进程之间发送和接收数据。 创建(打开)消息队列-mq_open()函数 mq_open()函数用于打开或创建一个消息队列,该函数定义如下: #include <mqueu 阅读全文
摘要:
POSIX 信号量 POSIX 信号量是一种 POSIX 标准中定义的进程间同步和互斥的方法。它允许进程之间通过信号量来实现临界区的互斥访问,从而避免竞争条件和死锁等问题。 信号量的P、V操作: P 操作:用于申请信号量资源。如果信号量的值大于 0,则将信号量的值减 1,表示占用一个资源;如果信号量 阅读全文
摘要:
管道 管道是针对于本地计算机的两个进程之间的通信而设计的通信方法,管道建立后,实际上是获得两个文件描述符:一个用与读取而另一个用于写入。任何从管道写入端写入的数据,可以从管道读取端读出。 管道具有以下特点: 管道是一种半双工通信机制,即数据只能在一个方向上流动,不能同时进行双向数据传输。一个进程可以 阅读全文
摘要:
信号 信号(signal)机制是Linux系统中最为古老的进程之间的通信机制。Linux信号也可以称为软中断,是在软件层次上对中断机制的一种模拟。在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是进程间通信机制中唯一的异步通信机制,进程不需要通过任何操作等待信号到达。 信号 阅读全文