2021年12月15日
摘要:
一、概述 1.epoll函数及相关结构体介绍 多路IO-epoll 将检测文件描述符的变化委托给内核去处理, 然后内核将发生变化的文件描述符对应的事件返回给应用程序. (通俗点讲就是我们不用关心文件描述符的变化了,内核帮我们干了,并且内核把那些有变化的具体的文件描述符都会返回回来) 函数介绍: in
阅读全文
posted @ 2021-12-15 10:43
飘杨......
阅读(275)
推荐(0)
摘要:
一、概述 poll函数介绍: int poll(struct pollfd *fds, nfds_t nfds, int timeout); 函数说明: 跟select类似, 监控多路IO, 但poll不能跨平台. 参数说明: fds: 传入传出参数, 实际上是一个结构体数组 fds.fd: 要监控
阅读全文
posted @ 2021-12-15 10:00
飘杨......
阅读(201)
推荐(0)
2021年12月13日
摘要:
一、概述 除了使用多线程或者多进程技术,我们是否还可以使用其他的方法来实现服务端连接多个客户端呢?答案是肯定的,那就是多路IO技术select。 多路IO技术: select, 同时监听多个文件描述符, 将监控的操作交给内核去处理, 数据类型fd_set: 文件描述符集合--本质是位图(关于集合可联
阅读全文
posted @ 2021-12-13 14:32
飘杨......
阅读(1262)
推荐(0)
摘要:
一、概述 案例:使用多进程实现聊天服务。要求:可以有多个客户端连接,且客户端发送什么数据服务端就回复什么数据 实现步骤: 1.创建监听文件描述符socket 2.绑定端口bind 3.监听端口listen 4.当接受到一个连接时开启一个子进程来实现,来实现和客户端的通讯(fork) 5.具体客户端通
阅读全文
posted @ 2021-12-13 13:39
飘杨......
阅读(92)
推荐(0)
摘要:
一、概述 案例:C+pthread+socket实现多线程聊天服务,要求:服务端可以连接多个客户端,客户端发的消息,服务端再转发给客户端。 实现步骤: 1.创建监听文件描述符socket 2.绑定端口bind 3.监听端口listen 4.接收客户端请求,并在新的线程中执行(pthread+acce
阅读全文
posted @ 2021-12-13 13:35
飘杨......
阅读(453)
推荐(0)
2021年12月8日
摘要:
一、概述 案例:实现一个视频预缓存的需求 原理: 1.本地有缓存就优先播放缓存,本地没有缓存就从服务端拉取数据存入缓存,然后再读取缓存播放 2.要实现1中描述的功能,a.首先要再App中新建一个代理服务 b.客户端请求代理服务 c.代理服务收到客户端请求,开启一个线程A发起请求网络服务器,d.将线程
阅读全文
posted @ 2021-12-08 15:14
飘杨......
阅读(1298)
推荐(0)
2021年12月7日
摘要:
一、概述 AndroidVideoCache是一个视频缓存框架,支持边下载边播放。 基本原理:使用本地代理代替直接根据url请求网络服务。 1.首先在本地新建一个服务(ServerSocket),监听客户端的接入,一旦有客户端接入就新建一个Socket来维持客户端和服务端之间的通讯。 2.转换url
阅读全文
posted @ 2021-12-07 17:14
飘杨......
阅读(1640)
推荐(0)
2021年12月3日
摘要:
一、概述 案例:编写一个案例代码,使用信号量(sem_t)来实现生产者消费者模型。 信号量:相当于多把锁,可以理解为加强版的互斥锁,其在一定程度上可以提高并发的效率 相关函数介绍: 相关函数 定义信号量 sem_t sem; int sem_init(sem_t *sem, int pshared,
阅读全文
posted @ 2021-12-03 10:02
飘杨......
阅读(446)
推荐(0)
2021年12月1日
摘要:
一、概述 案例:编写一个案例测试读写锁,要求:新建三个线程写,5个线程读,来测试读写锁。 读写锁的基本概念: 读写锁也叫共享-独占锁。当读写锁以读模式锁住时,它是以共享模式锁住的;当它以写模式锁住时,它是以独占模式锁住的。写独占,读共享。 读写锁的使用场合: 对数据结构读的次数远大于写的情况 读写锁
阅读全文
posted @ 2021-12-01 14:42
飘杨......
阅读(2132)
推荐(0)
2021年11月22日
摘要:
一、概述 案例:使用pthread+消息队列(单链表环形队列) 实现生产者消费者模型 各个类的职责说明: 1.message_queue.cpp消息队列 ps:这个类最主要的方法有两个(这个类是线程安全的),一个是enqueueMessage(Message)向消息队列中放入数据,另一个是deque
阅读全文
posted @ 2021-11-22 16:53
飘杨......
阅读(767)
推荐(0)