概述
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;
}