IPC 编程
IPC 编程
零一2035
为自己加油!!
展开
-
socket原理
套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。 应用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程提 供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个 TC转载 2016-05-23 13:54:51 · 263 阅读 · 0 评论 -
进程间通信之select
阻塞方式block,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回。使用Select就可以完成非阻塞non-block,就是进程或线程执行此函数时不必非要等待事件的发生,一旦执行肯定返回,以返回值的不同来反映函数的执行情况,如果事件发生则与阻塞方式相同,若事件没有发生则返回一个代码来告知事件未发生,而进程或线程继续执行,所以效率较高。转载 2017-09-27 13:35:02 · 754 阅读 · 0 评论 -
消息队列五
1 消息队列基本概念 消息队列是系统内核地址空间中的一个内部的链表。消息可以按照顺序发送到队列中,也可以以几种不同的方式从队列中读取。每一个消息队列用一个唯一的IPC标识符表示。 了解在系统内核中的数据结构是了解IPC机制如何工作的最好的方法。 首先我们看一下数据结构msgbuf。此数据结构可以说是消息数据的模板。虽然此数据结构需要用户自己定义,但了解系统中有这样一个数转载 2017-09-27 11:30:28 · 202 阅读 · 0 评论 -
信号量(1)
linux中两种基本的同步方法是信号量和互斥量。这两种方法很相似,而且它们可以相互通过对方来实现。信号量概述下面介绍用信号量进行同步。信号量概念由荷兰科学家Dijkstra首先提出。信号量是一个特殊类型的变量,它可以被增加或者减少。但对其的关键访问被保证是原子操作,即使在一个多线程程序中也是如此。信号量有两种类型:转载 2017-09-29 11:31:08 · 804 阅读 · 0 评论 -
消息队列三
一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制。Linux用宏MSGMAX和MSGMNB来限制一条消息的最大长度和一个队列的最大长度。二、在Li转载 2017-01-19 11:14:17 · 198 阅读 · 0 评论 -
pthread_setconcurrency简介
最近在code review一些人的代码的时候,发现了一个问题,就是很少人关注pthread_setconcurrency()函数,其实这个函数在pthread中是一个很重要的函数。在linux下,如果你忽略了这个函数的使用,那么能够并发的线程数目由实现者来控制,对于系统调度的效率而言往往不是什么好的事情,因为默认的设置往往不是最佳的。 更为糟糕的是,如果在某些系统中,如果你不调用pt转载 2017-09-28 10:17:49 · 2239 阅读 · 0 评论 -
互斥锁及条件变量
1.互斥锁的概念:互斥锁指代相互排斥,他是最基本的同步形式。互斥锁用于保护临界区,以保证任何时刻只有一个线程在执行其中的代码,或者任何时刻只有一个进程在执行其中的代码。保护一个临界区的通常轮廓大体如下:lock_the_mutex(...);临界区unlock_the_mutex(...);注:如果互斥锁变量是静态分配的,那么我们可以把它初始化成常值PTHREAD_MUTE原创 2017-09-28 13:48:41 · 218 阅读 · 0 评论 -
TCP\UDP
29.ISO的七层模型是什么?tcp/udp是属于哪一层?tcp/udp有何优缺点?答案:应用层表示层会话层运输层网络层物理链路层物理层 tcp /udp属于运输层 TCP 服务提供了数据流传输、可靠性、有效流控制、全双工操作和多路复用技术等。与 TCP 不同, UDP 并不提供对 IP 协议的可靠机制、流控制以及错误恢复功能等。由于 UDP 比较简单, UDP 头包含很少转载 2016-06-06 20:35:23 · 283 阅读 · 0 评论 -
linux 下信号量编程
这篇文章将讲述别一种进程间通信的机制——信号量。注意请不要把它与之前所说的信号混淆起来,信号与信号量是不同的两种事物。有关信号的更多内容,可以阅读我的另一篇文章:Linux进程间通信——使用信号。下面就进入信号量的讲解。一、什么是信号量为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行转载 2017-10-23 14:13:46 · 336 阅读 · 0 评论 -
消息队列二
消息队列1.msgget作用:创建消息队列原型:int msgget(key_t key, int msgflag)参数:key:键值 IPC_PRIVATE msgflag:权限 返回值:成功:消息队列ID 出错:-1头文件:sys/tpes.j sys/ipc.h转载 2017-01-19 11:17:02 · 203 阅读 · 0 评论 -
TCP连接
1、TCP连接手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。 建立起一个TCP连接需要经过“三次握手”: 第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包转载 2016-05-23 13:51:27 · 281 阅读 · 0 评论 -
消息队列一
进程之间不能通过内存直接互访,但进程之间有时候需要数据交互,因此进程间通信就非常的重要。Linux系统以多进程为核心的操作系统,因此进程间通信在Linux系统中频繁的被使用。 常见的IPC: 1 文件 2 信号 3 管道 4 共享内存 5 消息队列 6 信号量集(semaphore arrays) 7 网络编程(sock原创 2016-06-24 15:00:24 · 265 阅读 · 0 评论 -
消息队列四
这个是参照网络上面的例子写的,不过还是调用linux接口来实现的,基本没有难度。之所以还是记录下来,还是希望对消息队列机制有更加深一点的理解吧其实我的初衷还是想要自己实现一个类似于消息队列这样的机制,以便于在没有操作系统下也能运用。消息队列接收函数:#include#include#include#include#include#include转载 2017-01-19 14:14:11 · 190 阅读 · 0 评论 -
socket编程
网络编程1.1 一对一的编程模型服务器端: (1)创建socket,使用socket函数 (2)准备一个通信地址 struct sockaddr{}; 通用结构体 #include struct sockaddr_un{}; 本地通信使用的结构体 #include struct sockadd转载 2016-05-23 13:46:29 · 214 阅读 · 0 评论