![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
UNIX网络编程
文章平均质量分 83
银灵子Qincheng
曾在鹅厂、菊厂体验过生活,目前在猫厂被生活体验。公众号:我的IT技术路。关注我,一起聊聊感兴趣的。
展开
-
UNIX编程——管道和FIFO
进程间的通信有三种形式:管道/FIFO、Posix(Portable Operating System Interface,可移植操作系统接口)消息队列、System V 消息队列,先来介绍第一种通信方式,也是最开始的一种通信方式:管道/FIFO1.对于管道而言,它的局限在于没有名字,从而只能有秦缘关系的进程使用,但是后面有发展出FIFO(这种又被称为有名管道),一般使用的是read和writ原创 2015-11-21 20:43:06 · 994 阅读 · 0 评论 -
UNIX网络编程——Posix共享内存区和System V共享内存区
Posix提供了两种在无亲缘关系进程间共享内存区的方法:(1)内存映射文件:先有open函数打开,然后调用mmap函数把得到的描述符映射到当前进程地址空间中的一个文件。(2)共享内存区对象:先有shm_open打开一个Posix IPC名字(也可以是文件系统中的一个路径名),然后调用mmap将返回的描述符映射到当前进程的地址空间。两种方法多需要调用mmap,差别在于作为mm转载 2015-11-29 17:23:56 · 1220 阅读 · 0 评论 -
信号量、互斥锁,读写锁和条件变量的区别
信号量强调的是线程(或进程)间的同步:“信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在sem_wait的时候,就阻塞在那里)。当信号量为单值信号量是,也可以完成一个资源的互斥访问。有名信号量:可以用于不同进程间或多线程间的互斥与同步 创建打开有名信号量 sem_t *sem_open(const char *name转载 2015-11-29 16:24:36 · 548 阅读 · 0 评论 -
UNIX网络编程——Posix信号量
信号量(semaphore)是一种用于提供不同进程间或一个给定进程的不同线程间同步手段的原语。信号量的使用主要是用来保护共享资源,使得资源在一个时刻只有一个进程(线程)所拥有。信号量的值为正的时候,说明它空闲。所测试的线程可以锁定而使用它。若为0,说明它被占用,测试的线程要进入睡眠队列中,等待被唤醒。Posix信号量分为有名信号量和无名信号量(也叫基于内存的信号量)。原创 2015-11-27 16:21:33 · 262 阅读 · 0 评论 -
UNIX网络编程——记录上锁
记录锁是读写锁的一种扩展类型,可用于亲缘关系或无亲缘关系的进程之间共享某个文件的读与写。被锁住的文件通过文件描述符进行访问,执行上锁的操作函数是fcntl,这种类型的锁通常在内核中维护。 记录锁的功能是:一个进程正在读或修改文件的某个部分时,可以阻止其他进程修改同一文件区,即其锁定的是文件的一个区域或整个文件。记录锁有两种类型:共享读锁,独占写锁。基本规则是:多个进程在一个给定的字节上可原创 2015-11-27 15:12:04 · 322 阅读 · 0 评论 -
UNIX网络编程——读写锁
读写锁比起mutex具有更高的适用性,具有更高的并行性,可以有多个线程同时占用读模式的读写锁,但是只能有一个线程占用写模式的读写锁,读写锁的三种状态:1.当读写锁是写加锁状态时,在这个锁被解锁之前,所有试图对这个锁加锁的线程都会被阻塞2.当读写锁在读加锁状态时,所有试图以读模式对它进行加锁的线程都可以得到访问权,但是以写模式对它进行加锁的线程将会被阻塞3.当读写锁在读模式的锁状态时,如原创 2015-11-27 09:41:11 · 309 阅读 · 0 评论 -
UNIX编程——互斥锁和条件变量
在线程和进程的实现中,完成数据共享需要同步的,互斥锁和条件变量是很重要的组成部分。1.互斥锁互斥锁是用来保护临界区资源,实际上保护的是临界区中被操纵的数据,互斥锁通常用于保护由多个线程或多进程分享的共享数据。一般是一些可供线程间使用的全局变量,来达到线程同步的目的,即保证任何时刻只有一个线程或进程在执行其中的代码。原创 2015-11-24 16:41:48 · 606 阅读 · 0 评论 -
UNIX网络编程——System V 消息队列
消息队列可以认为是一个消息链表,System V 消息队列使用消息队列标识符标识。具有足够特权的任何进程都可以往一个队列放置一个消息,具有足够特权的任何进程都可以从一个给定队列读出一个消息。在某个进程往一个队列写入消息之前,并不需要另外某个进程在该队列上等待消息的到达。System V 消息队列是随内核持续的,只有在内核重起或者显示删除一个消息队列时,该消息队列才会真正被删除。对于系统中没个消原创 2015-11-24 10:20:14 · 519 阅读 · 0 评论 -
UNIX网络编程——Posix 消息队列
消息队列可以认为是一个消息链表,某个进程往一个消息队列中写入消息之前,不需要另外某个进程在该队列上等待消息的达到,这一点与管道和FIFO相反。消息队列是随着内核的持续性的,而管道只是随着进程的持续性。这意味着管道在进程结束时,留在管道内的数据将会被丢弃。Posix消息队列与System V消息队列的区别如下:1. 对Posix消息队列的读总是返回最高优先级的最早消息,对Syst原创 2015-11-23 09:28:59 · 278 阅读 · 0 评论 -
Unix网络编程——简介
1.IPC 进程间通信方式:1.管道 2.System V 消息队列 3.Posix消息队列 4.远程过程调用2.保持进程间的同步操作:1.文件系统 2.记录上锁 3.System V信号量 4. Posix 信号量 5.互斥锁 6.读写锁3.进程间的信息共享:1.穿过内核,访问文件系统的文件信息 2.共享驻留于内核的信息 3.共享内存区4.IPC对象的持续性:1.随着文件系原创 2015-11-20 10:52:09 · 443 阅读 · 0 评论 -
System V信号量
System V 信号量在内核中维护,其中包括二值信号量 、计数信号量、计数信号量集。二值信号量 : 其值只有0、1 两种选择,0表示资源被锁,1表示资源可用;计数信号量:其值在0 和某个限定值之间,不限定资源数只在0 1 之间;计数信号量集 :多个信号量的集合组成信号量集创建一个信号量或访问一个已经存在的信号量集。int semget(key_t key, int nsems转载 2015-11-29 16:05:36 · 313 阅读 · 0 评论