随笔分类 - Linux
摘要:转载自:https://blog.csdn.net/lianghe_work/article 一、网络应用层编程 1、Linux网络编程01——网络协议入门 2、Linux网络编程02——无连接和面向连接的区别 3、Linux网络编程03——字节序和地址转换 4、Linux网络编程04——套接字 5
阅读全文
摘要:头文件head.h main.c 学习版:https://www.cnblogs.com/cthon/p/9085026.html 通用版代码:https://www.cnblogs.com/cthon/p/9097007.html 难度升级版代码:https://www.cnblogs.com/c
阅读全文
摘要:池 由于服务器的硬件资源“充裕”,那么提高服务器性能的一个很直接的方法就是以空间换时间,即“浪费”服务器的硬件资源,以换取其运行效率。这就是池的概念。 池是一组资源的集合,这组资源在服务器启动之初就被创建并初始化,这称为静态资源分配。 当服务器进入正式运行阶段,即开始处理客户请求的时候,如果它需要相
阅读全文
摘要:条件变量 条件变量是利用线程间共享的全局变量进行同步的一种机制,主要包括两个动作:一个线程等待"条件变量的条件成立"而挂起;另一个线程使"条件成立"(给出条件成立信号)。为了防止竞争,条件变量的使用总是和一个互斥锁结合在一起。 1. 创建和注销 条件变量和互斥锁一样,都有静态动态两种创建方式, 静态
阅读全文
摘要:1、同步异步,阻塞非阻塞区别联系 实际上同步与异步是针对应用程序与内核的交互而言的。同步过程中进程触发IO操作并等待(也就是我们说的阻塞)或者轮询的去查看IO操作(也就是我们说的非阻塞)是否完成。 异步过程中进程触发IO操作以后,直接返回,做自己的事情,IO交给内核来处理,完成后内核通知进程IO完成
阅读全文
摘要:首先说明线程中要回收哪些资源,理解清楚了这点之后在思考资源回收的问题。 1、子线程创建时从父线程copy出来的栈内存; 线程退出有多种方式,如return,pthread_exit,pthread_cancel等;线程分为可结合的(joinable)和 分离的(detached)两种,如果没有在创建
阅读全文
摘要:什么是Makefile? 一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为 makefile就像一个Shell脚本一样,其中也可以执行操作系统
阅读全文
摘要:值得注意:线程是轻量级进程,pcb拷贝自所属进程,内容一样,。
阅读全文
摘要:一般我们是通过动态创建子进程(或者子线程)来实现并发服务器的,这样的缺点 (1)动态创建进程(或线程)比较耗费时间,这将导致较慢的客户响应 (2)动态创建的子进程通常只用来为一个客户服务,这样导致了系统上产生大量的细微进程(或线程)。进程和线程间的切换将消耗大量CPU时间 (3)动态创建的子进程是当
阅读全文
摘要:共享内存的创建 一、区别 1. 共享内存允许两个或多个进程共享一给定的存储区,因为数据不需要来回复制,所以是最快的一种进程间通信机制。共享内存可以通过mmap()映射普通文件(特殊情况下还可以采用匿名映射)机制实现,也可以通过系统V共享内存机制实现。应用接口和原理很简单,内部机制复杂。为了实现更安全
阅读全文
摘要:设想一下如下场景:有100万个客户端同时与一个服务器进程保持着TCP连接。而每一时刻,通常只有几百上千个TCP连接是活跃的(事实上大部分场景都是这种情况)。如何实现这样的高并发? 在select/poll时代,服务器进程每次都把这100万个连接告诉操作系统(从用户态复制句柄数据结构到内核态),让操作
阅读全文
摘要:IO复用 我们首先来看看服务器编程的模型,客户端发来的请求服务端会产生一个进程来对其进行服务,每当来一个客户请求就产生一个进程来服务,然而进程不可能无限制的产生,因此为了解决大量客户端访问的问题,引入了IO复用技术。 即:一个进程可以同时对多个客户请求进行服务。 也就是说IO复用的“介质”是进程(准
阅读全文