- 博客(4)
- 收藏
- 关注
原创 【C++】【条件变量】实现一个线程池及任务队列完成复用
直到其他线程notify_one或notify_all来通知该线程,然后重新判断第二个条件,如果为真,这时开始等待锁,等抢占到锁,开始往下执行。这句话是创建一个task对象,这个task是一个lambda对象,捕获 i 变量传入MyFun。1)cv.wait等待两个条件一个是锁一个是队列不为空,当两个条件全部满足时,直接往下执行;当队列为空时,第二个条件不满足,2)创建完任务对象,等待任务队列的锁,获得之后push一个task,然后notify某个线程。// 调用封装的函数。
2023-11-07 19:56:16
99
原创 【FreeSwitch】如何往通道里写音频数据
在 FreeSWITCH 中,您可以使用自定义的 FreeSWITCH 应用程序来将音频数据写入通话通道,使对端听到。写入音频数据:使用 FreeSWITCH 的 API 函数将读取的音频数据写入通话通道。音频数据写入后,对端将会听到它。创建自定义应用程序:首先,您需要创建一个自定义 FreeSWITCH 应用程序,以便在通话中写入音频数据。编写应用程序逻辑:在自定义应用程序中,您可以编写逻辑来读取音频数据并将其写入通话通道。这可以是音频文件解码后的音频帧,或者来自实时音频源的音频数据。
2023-10-20 15:49:25
211
1
原创 【C++】【Boost库】boost::beast::multi_buffer类的读写
是 Boost.Beast 库中的一个类,用于管理多个缓冲区的集合,提供了一些用于读写操作的接口。这个类通常用于异步 I/O 操作,特别是在网络编程中,用于处理数据流。这就完成了一个简单的buffer数据的读取,正常情况下是两个线程一个读一个写,不断的进行读写。
2023-10-17 10:35:16
272
原创 【C++】【异步编程】【WebSocket】通过定时器和回调实现循环读写
这段代码的主要目的是通过定时器控制 WebSocket 会话的数据平面循环,确保在特定条件下发送数据,并在定时器超时时继续循环。这是一种典型的异步编程模式,其中通过定时器和回调函数来组织异步任务的执行。
2023-10-17 10:07:01
243
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人