分享

APP直播源代码,缓冲是否可以启动两套方案使用

 yunbaoKJ 2023-06-29 发布于山东

APP直播源代码的服务器开发中,通常会把逻辑处理线程和IO处理线程分开。其中逻辑处理线程是对接收的包进行逻辑处理,IO处理线程是网络数据的发送和接收,连接的建立和维护,按照一般逻辑,这个数据队列是多个线程在共享,每次访问都要添加设备锁,这无疑户浪费APP直播源代码的资源和占用开销,如何减少这个部分成了重点。

  



一、双缓冲队列

所谓双缓冲数据,一个负责从里写入数据,一个负责读取数据,当逻辑线程读完数据后负责将自己的队列和IP线程的队列进行交换,这样需要加锁的地方,有两个从队列中写入数据和两个队列进行交换,如果是一块缓冲区,读写操作是不分离的,双缓冲区起吧节省了单缓冲区时读部分的操作互斥和同步开销。

二、缓冲状态

1、并发读写,多数情况下,APP直播源代码生产者控制着某个队列进行写操作,消费者控制着另外一个队列进行读操作,逻辑线程和IO线程进行独占操作,大大降低互斥/同步的开销。

2、缓冲区切换,注意操作的不论是APP直播源代码的用户方还是平台方,都要在完成对自己队列的操作后一定要先释放锁资源再去尝试控制另外的队列。因为如果生产者操作完成不释放自己的锁去尝试控制另外的锁,同时消费者也不释放资源去尝试控制另外的锁,那么就会出现死锁。

  



三、交换策略原则

优先保证APP直播源代码的读操作,消费者完成对队列的操作后,立即进行交换。

通过交换线阻塞在生产者的条件变量出,工作线程阻塞在消费者条件变量出,生产者队列数据个数大于多少后,立即发出条件通知,随机发生队列交换,交换完毕后,此时交换线程阻塞在消费者的条件变量处,工作线程结束等待开始处理请求,APP直播源代码处理完后等待交换线程发出的条件通知,同时发出工作线程结束工作的条件变量,通知交换线程继续工作。

声明:以上内容为云豹科技作者本人原创,未经作者本人同意,禁止转载,否则将追究相关法律责任

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多