09 2021 档案

摘要:信号量相当于加强版的互斥锁 mutex实现的同步是串行的,既能提供进程间的同步,还能提供线程间的同步 /* 信号量的类型 sem_t int sem_init(sem_t *sem, int pshared, unsigned int value); - 初始化信号量 - 参数: - sem : 信 阅读全文
posted @ 2021-09-30 00:41 wsq1219 阅读(257) 评论(0) 推荐(0) 编辑
摘要:生产者消费者模型(简略) //效率不高,引入条件变量 #include <stdio.h> #include <pthread.h> #include <stdlib.h> #include <unistd.h> // 创建一个互斥量 pthread_mutex_t mutex; struct No 阅读全文
posted @ 2021-09-28 22:00 wsq1219 阅读(59) 评论(0) 推荐(0) 编辑
摘要:造成死锁的原因:1.重复上锁(自己锁自己) 2.没有解锁 死锁的几种场景:忘记释放锁重复加锁多线程多锁,抢占锁资源 读写锁 当有一个线程已经持有互斥锁时,互斥锁将所有试图进入临界区的线程都阻塞住。但是考虑一种情形,当前持有互斥锁的线程只是要读访问共享资源,而同时有其它几个线程也想读取这个共享资源,但 阅读全文
posted @ 2021-09-27 21:16 wsq1219 阅读(459) 评论(0) 推荐(0) 编辑
摘要:原子操作是不被打断的操作,即它是最小的执行单位 通过加锁,可实现原子操作 阅读全文
posted @ 2021-09-27 18:18 wsq1219 阅读(17) 评论(0) 推荐(0) 编辑
摘要:线程的主要优势在于,能够通过全局变量来共享信息。不过,这种便捷的共享是有代价的:必须确保多个线程不会同时修改同一变量,或者某一线程不会读取正在由其他线程修改的变量。 原子操作 线程同步:即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作,其他线程才能对该内存 阅读全文
posted @ 2021-09-27 18:12 wsq1219 阅读(37) 评论(0) 推荐(0) 编辑
摘要:服务器程序通常需要处理三类事件:I/O 事件、信号及定时事件。有两种高效的事件处理模式:Reactor和 Proactor,同步 I/O 模型通常用于实现 Reactor 模式,异步 I/O 模型通常用于实现 Proactor 模式。 Reactor 要求主线程(I/O处理单元)只负责监听文件描述符 阅读全文
posted @ 2021-09-24 13:34 wsq1219 阅读(125) 评论(0) 推荐(0) 编辑
摘要:socket是套接字,通过套接字,进行网络数据的收和发套接字就像网络中的“手机” 套接字是网络数据传输用的软件设备 errno获得出现的错误 既然是文件,那么理所当然的,我们可以使用文件描述符引用套接字。与管道类似的,Linux 系统将其封装成文件的目的是为了统一接口,使得读写套接字和读写文件的操作 阅读全文
posted @ 2021-09-24 01:06 wsq1219 阅读(42) 评论(0) 推荐(0) 编辑
摘要:Human *phuman = new Men; phuman->funcmen();//虽然new子类对象,但是你是父类指针无法调用子类成员函数 父类指针可以指向子类,发过来不行 在父类中加了虚函数后 Human *phuman = new Men; phuman->eat(); //此时调用的是 阅读全文
posted @ 2021-09-21 19:45 wsq1219 阅读(135) 评论(0) 推荐(0) 编辑
摘要:I/O设备 用户态,内核态(内核缓冲区) read函数 阻塞和非阻塞描述的是用户线程调用内核IO操作时的用户线程的状态:阻塞表示在调用内核IO时,用户线程会挂起,直到调用返回到用户空间才继续执行;非阻塞表示在调用内核IO时立即返回一个状态码或者数据,用户线程一直处于忙的状态 阻塞:当我们调用read 阅读全文
posted @ 2021-09-17 00:02 wsq1219 阅读(91) 评论(0) 推荐(0) 编辑
摘要:用netstat来查看网路状态 客户端连接进来后 断开服务器端,服务器端处于FIN_WAIT2 断开服务器端和客户端,查看状态 服务器端处于TIME_WAIT,此时如果再去启动服务端,会出现bind错误 端口复用由来:是在服务器端主动结束,想立刻运行能够重新绑定上 设置在bind之前 setsock 阅读全文
posted @ 2021-09-16 20:35 wsq1219 阅读(432) 评论(0) 推荐(0) 编辑
摘要:半关闭状态 我们需要的是一种关闭TCP连接其中一半的方法。也就是说,我们想给服务器发送一个FIN,告诉他我们已经完成了数据发送,但是仍然保持套接字描述符打开以便读取, 阅读全文
posted @ 2021-09-12 23:50 wsq1219 阅读(8) 评论(0) 推荐(0) 编辑
摘要:int bind(int sock, struct sockaddr *addr, socklen_t addrlen); //Linux int bind(SOCKET sock, const struct sockaddr *addr, int addrlen); //Windows bind函 阅读全文
posted @ 2021-09-12 18:50 wsq1219 阅读(44) 评论(0) 推荐(0) 编辑
摘要:#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> // 打开一个已经存在的文件 int open(const char *pathname, int flags); 参数: - pathname:要打开的文件路径 - fl 阅读全文
posted @ 2021-09-12 02:33 wsq1219 阅读(27) 评论(0) 推荐(0) 编辑
摘要:ipconfig 点分十进制字符串和用网络字节序整数表示的IPV4地址的转换 #include <arpa/inet.h> // p:点分十进制的IP字符串,n:表示network,网络字节序的整数 int inet_pton(int af, const char *src, void *dst); 阅读全文
posted @ 2021-09-11 18:25 wsq1219 编辑
摘要:安装nginx 搭建web服务器 pcre库 :函数库,支持解析正则表达式; zlib库: 压缩加压缩功能 openssl库:ssl功能相关的库,用于网站加密 nginx源码下载 mainline version 主线版本 更新快 stable version 稳定版本 经过较长时间的测试 Lega 阅读全文
posted @ 2021-09-11 10:24 wsq1219 阅读(34) 评论(0) 推荐(0) 编辑