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 <<