WebRTC中将某些功能划分了模块,现在介绍一下模块是如何执行的。WebRTC中会创建一个线程用于执行模块和异步的任务,模块生成以后注册到线程中,模块执行时会计算下次需要执行的时间,线程根据模块提供的时间会按照指定的时间再次调用模块。线程在处理模块的同时也可以处理其他线程投递的任务。
Module使用示例
#include <iostream>
#include "api/task_queue/queued_task.h"
#include "modules/utility/source/process_thread_impl.h"
#include "modules/include/module.h"
#include "rtc_base/location.h"
using namespace std;
using namespace webrtc;
/*模块一*/
class my_module_one :public Module
{
public:
/*每秒执行一次*/
int64_t TimeUntilNextProcess() { return 1000; }
void Process()
{
static int count = 0;
cout << "process module_one " << count++ << endl;
}
};
/*模块二*/
class my_module_two : public Module
{
public:
/*每两秒执行一次*/
int64_t TimeUntilNextProcess() { return 2000; }
void Process()
{
static int count = 0;
cout <<