Linux进阶
Linux多线程、网络基础、网络编程套接字、高级I/O
贪心的葡萄
算法与数据结构,计算智能,进化计算,神经网络,C/C ,linux,python,matlab
展开
-
实现线程池
实现线程池#include <iostream>#include <queue>#include <pthread.h>#include <unistd.h>using namespace std;typedef bool (*handler_t)(int);class Task{private: int _index; handler_t _handler;public: Task() : _index(-1原创 2022-03-23 11:00:01 · 117 阅读 · 0 评论 -
queue实现阻塞队列
queue实现阻塞队列#include <iostream>#include <queue>#include <unistd.h>#include <pthread.h>using namespace std;template <typename T>class blockQueue{private: int _capacity; queue<T> _bq; pthread_mutex_t _原创 2022-03-22 17:25:41 · 427 阅读 · 0 评论 -
POSIX线程库实现生产者消费者模型
POSIX线程库实现生产者消费者模型#include <iostream>#include <unistd.h>#include <pthread.h>using namespace std;int apple = 0;pthread_mutex_t mutex;pthread_cond_t pcond;pthread_cond_t ccond;void *producter(void *arg){ while (1) {原创 2022-03-21 21:02:18 · 406 阅读 · 0 评论 -
Linux_以太网
网络接口层包括数据链路层和物理层。用于两个设备(同一种数据链路节点)之间进行传递。以太网以太网不是一种具体的网络,而是一种技术标准,既包含了数据链路层的内容,也包含了一些物理层的内容。规定了网络拓扑结构、访问控制方式、传输速率等,以太网中的网线必须使用双绞线,传输速率有10M、100M、1000M等,以太网是当前应用最广泛的局域网技术,和以太网并列的还有令牌环网,无线局域网等。以太网帧格式...原创 2020-02-16 16:10:55 · 976 阅读 · 0 评论 -
Linux_IP协议
IP协议协议格式版本:4位首部长度:4位,最大长度60字节(4位最大15比特*4字节)服务类型:8位总长度:16位标识:16位标志位:3位片偏移:13位生存时间TTL:8位协议:8位校验和:16位源IP:32位目地IP:32位选项:40字节网段划分IP地址分为两个部分,网络号和主机号。网络号保证相互连接的两个网段具有不同的标识,主机号表示同一网段内,主机之间具...原创 2020-02-16 15:17:05 · 262 阅读 · 0 评论 -
Linux_UDP协议和TCP协议
传输层负责数据能够从发送端传输到接收端。端口号(Port)标识了一个主机上进行通信的不同的应用程序。0~1023:知名端口号。如FTP(21)、SSH(22)、Telnet(23)、SMTP(25)、HTTP(80)、HTTPS(443)。查看知名端口号cat /etc/services1024~65535:操作系统动态分配端口号。在TCP/IP协议中,用"源IP“、“源端口号”、“...原创 2020-02-14 13:54:23 · 911 阅读 · 0 评论 -
Linux_HTTP协议
应用层解决我们实际问题,满足我们日常需求的网络程序,都是在应用层。应用层协议协议是一种"约定"。socket API的接口,在读写数据时,都是按"字符串"的方式来发送接收的。如果我们要传输一些结构化数据,比如实现一个网络计算器,客户端把两个数发给服务器,服务器运算后把结果返回客户端,约定方案如下:方案一:客户端发送"a+b"字符串,a、b为整数,数字之间有运算符+,数字和运算符之间没有空格...原创 2020-02-13 15:11:58 · 473 阅读 · 0 评论 -
Linux_基于TCP的网络套接字编程
1、地址转换函数sockaddr_in中的成员struct in_addr sin_addr表示32位的IP地址,但是我们通常用点分十进制的字符串表示IP地址,以下函数可以在字符串表示和in_addr表示之间转换。字符串转in_addr函数:#include <arpa/inet.h>int inet_aton(const char *cp, struct in_addr *i...原创 2020-02-11 16:01:04 · 267 阅读 · 0 评论 -
Linux_基于UDP的网络套接字编程
1、网络编程基础IP地址在IP数据包头部中,有两个IP地址,分别是源IP地址和目的IP地址。端口号端口号(port)是传输层协议的内容。端口号是一个2字节16位的整数,用来标识一个进程,告诉操作系统,当前的这个数据要交给哪一个进程来处理。IP地址 + 端口号能够标识网络上的某一台主机的某一个进程。一个端口号只能被一个进程占用,一个进程可以绑定多个端口号。传输层协议(TCP和UDP)的数据段...原创 2020-02-10 16:24:02 · 328 阅读 · 0 评论 -
Linux_网络传输
1、网络互联网络互联:多台计算机连接在一起,完成数据共享。局域网LAN:通过交换机和路由器连接在一起。广域网WAN:是一种跨越大的、地域性的计算机网络的集合。2、协议协议是一种约定。计算机之间的传输媒介是光信号和电信号,通过"频率"和"强弱"来表示0和1这样的信息。要想传递各种不同的信息,就需要约定好双方的数据格式。由于计算机生产厂商很多,操作系统也很多,还有不同硬件设备,此时就需要一个...原创 2020-02-09 13:25:53 · 780 阅读 · 1 评论 -
Linux_线程池
1、线程池线程池是一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量。应用场景需要大量的线程来完成任务,且完成任务的时间比较...原创 2020-02-08 15:18:14 · 243 阅读 · 0 评论 -
Linux_生产者消费者模型
1、生产者消费者模型生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力。这个阻塞队列就是用来给生产者和消费者解耦的。生产者消费者模型优点:解耦、支持并发...原创 2020-02-07 14:30:33 · 170 阅读 · 0 评论 -
Linux_线程互斥与同步
1、linux线程互斥临界资源:多线程执行流共享的资源临界区:每个线程内部访问临界资源的代码互斥:任何时刻,互斥保证有且只有一个线程执行流进入临界区访问临界资源原子性:不会被任何调度机制打断,要么完成,要么未完成互斥量mutex大部分情况,线程使用数据为局部变量,变量地址空间在线程栈空间内,归属单线程,其他线程无法获取。有时候,很多变量需要在线程间共享,这样的变量称为共享变量,但是多线...原创 2020-02-06 15:49:07 · 208 阅读 · 0 评论 -
Linux_多线程
1、线程的概念原创 2020-02-04 19:16:17 · 180 阅读 · 0 评论