![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
文章平均质量分 78
^卿^
他日若是凌云志,敢笑黄巢不丈夫
展开
-
Linux下,writeread,recvsend, recvfromsendto的区别
Linux下,write/read,recv/send, recvfrom/sendto的区别先说概念和应用场景:read/wirte是通用的文件描述符操作;recv/send 通常应用于TCP;recvfrom/sendto通常应用于UDP。read/writessize_t write(int fd, const void*buf,size_t nbytes);ssize_t read(int fd,void *buf,size_t nbyte); write函数是将buf中的nbyt原创 2021-08-10 22:23:54 · 310 阅读 · 0 评论 -
linux 之 __thread & pthread_key_t
linux 之 __thread & pthread_key_t在说__thread之前,先来看看pthread_ket_t吧。参考:http://blog.csdn.net/lmh12506/article/details/8452700上面的博文说的比较通俗易懂。线程私有数据可以理解为线程内的全局变量。在线程内可以被所有函数访问,但是不能被其他线程的函数访问。对于pthread_key_t的使用,最好使用RAII://博主参照muduo写的#include <pthread.h&原创 2021-06-04 21:27:28 · 375 阅读 · 0 评论 -
Linux下pthread_once()函数
Linux下pthread_once()函数函数声明int pthread_once(pthread_once_t *once_control, void (*init_routine) (void));1本函数使用初值为PTHREAD_ONCE_INIT的once_control变量保证*init_routine()*函数在本进程执行序列中仅执行一次。例子#include <semaphore.h>#include <sys/types.h>#include <原创 2021-06-04 21:27:03 · 168 阅读 · 0 评论 -
Linux下进程间通信方式——使用消息队列
Linux下进程间通信方式——使用消息队列一、什么是消息队列消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。 每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制。Linux用宏MSGMAX和MSGMNB来限制一条消息的最大长度和一个队列的最大长度。二、在Linux中使用消息队列Linux提供了一系列消息队列的函数接口来让我们方便地使用它来实现进原创 2021-01-23 14:53:23 · 116 阅读 · 0 评论 -
Linux下进程间通信方式——共享内存
Linux下进程间通信方式——共享内存1.什么是共享内存?共享内存就是允许两个或多个进程共享一定的存储区。就如同 malloc() 函数向不同进程返回了指向同一个物理内存区域的指针。当一个进程改变了这块地址中的内容的时候,其它进程都会察觉到这个更改。因为数据不需要在客户机和服务器端之间复制,数据直接写到内存,不用若干次数据拷贝,所以这是最快的一种IPC。注:共享内存没有任何的同步与互斥机制,所以要使用信号量来实现对共享内存的存取的同步。共享内存特点和优势当中共享内存的大致原理相信我们可以看明白了,原创 2021-01-23 14:52:45 · 137 阅读 · 0 评论 -
Linux进程间通信——使用系统信号量
Linux进程间通信——使用系统信号量一、什么是信号量为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,我们需要一种方法,它可以通过生成并使用令牌来授权,在任一时刻只能有一个执行线程访问代码的临界区域。临界区域是指执行数据更新的代码需要独占式地执行。而信号量就可以提供这样的一种访问机制,让一个临界区同一时间只有一个线程在访问它,也就是说信号量是用来调协进程对共享资源的访问的。信号量是一个特殊的变量,程序对其访问都是原子操作,且只允许对它进行等待(即P(信号变量))和发送(即V(信号变量))原创 2021-01-23 14:51:41 · 138 阅读 · 0 评论 -
Linux进程间通信——使用POSIX信号量
Linux进程间通信——使用POSIX信号量一、引言信号量是包含一个非负整数型的变量,并且带有两个原子操作wait和signal。Wait还可以被称为down、P或lock,signal还可以被称为up、V、unlock或post。在UNIX的API中(POSIX标准)用的是wait和post。对于wait操作,如果信号量的非负整形变量S大于0,wait就将其减1,如果S等于0,wait就将调用线程阻塞;对于post操作,如果有线程在信号量上阻塞(此时S等于0),post就会解除对某个等待线程的阻塞,原创 2021-01-23 14:51:05 · 486 阅读 · 0 评论 -
Linux进程间通信之管道
Linux进程间通信之管道进程间通信 (IPC ) Inter-Process Communication比较好理解概念的就是进程间通信就是在不同进程之间传播或交换信息。linux下IPC机制的分类 管道、信号、共享内存、消息队列、信号量、套接字特点管道是最古老的IPC,但目前很少使用以文件做交互的媒介,管道分为有名管道和无名管道历史上的管道通常是指半双工管道,如果需要双向通信,则创建两个管道3.2 管道:有两种形式,命令行和非命令行编程模型:进程A创建管道(mkfifo) -&原创 2021-01-23 14:50:35 · 73 阅读 · 0 评论 -
Posix 信号量与System v信号量的区别
Posix 信号量与System v信号量的区别在回答这个问题之前,首先要先了解什么是Posix,什么又是System V。简要的说,Posix是“可移植操作系统接口(Portable Operating System Interface )的首字母简写,但它并不是一个单一的标准,而是一个电气与电子工程学会即IEEE开发的一系列标准,它还是由ISO(国际标准化组织)和IEC(国际电工委员会)采纳的国际标准。而System v是Unix操作系统众多版本的一个分支,它最初是由AT&T在1983年第一原创 2021-01-23 14:49:58 · 458 阅读 · 0 评论 -
Linux中的各种锁及其基本原理
Linux中的各种锁及其基本原理0.概述通过本文将了解到如下内容:Linux系统的并行性特征互斥和同步机制Linux中常用锁的基本特性互斥锁和条件变量1.Linux的并行性特征Linux作为典型的多用户、多任务、抢占式内核调度的操作系统,为了提高并行处理能力,无论在内核层面还是在用户层面都需要特殊的机制来确保任务的正确性和系统的稳定运行,就如同一个国家需要各种法律条款来约束每个公民的行为,才能有条不紊地运转。在内核层面涉及到各种软硬件中断、进线程睡眠、抢占式内核调度、多处理器SMP架构原创 2021-01-23 14:49:18 · 1801 阅读 · 0 评论 -
linux之pthread
并行和并发的区别并发(concurrency):在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行。其中两种并发关系分别是同步和互斥。(并发是指同一时刻只能有一条指令执行,但多个进程指令被快速轮换执行,使得在宏观上有多个进程被同时执行的效果–宏观上并行,针对单核处理器)互斥:进程间相互排斥的使用临界资源的现象,就叫互斥。同步(synchronous):进程之间的关系不是相互排斥临界资源的关系,而是相互依赖的关系。进一步的说明:就是前一个进原创 2021-01-23 14:48:26 · 1354 阅读 · 0 评论 -
linux的tcp非阻塞客户端与服务端demo源码
客户端#include <stdio.h> #include <string.h> #include <errno.h> #include <sys/socket.h> #include <resolv.h> #include <stdlib.h> #include <netinet/in....原创 2019-05-15 11:06:01 · 994 阅读 · 0 评论