webrtc libjingle worker thread

来源:互联网 发布:面包板入门单片机 编辑:程序博客网 时间:2024/06/10 01:37

概述

worker thread 可以理解为一种数据流的顺序执行的帮衬, 不会堵塞任务执行。使用 worker thread的类包括ChannelManager,SocketMonitor,P2PTransportChannel 和
属于Port类的对象等。该线程是用于处理大工作量的方法,此线程内的方法可能会处理很长时间,如网络消息等。

使用方式

#ifndef  CHANNELMANAGER_H_H#define  CHANNELMANAGER_H_H#include <string>  #include <iostream>  #include "talk/base/thread.h"  class ChannelManager{public:    ChannelManager();    ~ChannelManager();    bool SetString(std::string message);private:    bool SetString_w(std::string message);private:    talk_base::Thread* worker_thread_;};#endif#include "ChannelManager.h"#include <assert.h>#include "talk/base/bind.h"using namespace  talk_base;ChannelManager::ChannelManager()    :worker_thread_(NULL){    worker_thread_ = new talk_base::Thread();    assert(worker_thread_ != NULL);    worker_thread_->Start();}ChannelManager::~ChannelManager(){    worker_thread_->Stop();}bool ChannelManager::SetString(std::string message){    return worker_thread_->Invoke<int>(Bind(&ChannelManager::SetString_w, this,message));}bool ChannelManager::SetString_w(std::string message){    printf("message %s\n", message.c_str());    return true;}