Thrift之C++ 异步连接池实例

#include 
#include 
#include 
#include 

using namespace ::apache::thrift;
using namespace ::apache::thrift::protocol;
using namespace ::apache::thrift::transport;
using namespace ::apache::thrift::server;
using namespace ::apache::thrift::concurrency;

using boost::shared_ptr;

int port = 9090;
shared_ptr handler(new serDemoHandler());
shared_ptr processor(new serDemoProcessor(handler));
shared_ptr serverTransport(new TServerSocket(port));
shared_ptr transportFactory(new TBufferedTransportFactory());
shared_ptr protocolFactory(new TBinaryProtocolFactory());

shared_ptr threadManager = ThreadManager::newSimpleThreadManager(10);//指定10个线程数
shared_ptr threadFactory = shared_ptr(new PosixThreadFactory());
threadManager->threadFactory(threadFactory);
threadManager->start();
TThreadPoolServer server(processor,serverTransport,transportFactory,protocolFactory,threadManager);//使用线程池
//TNonblockingServer server(processor,protocolFactory,port);//不使用线程池

server.serve();

Windows下将PosixThreadFactory换成PlatformThreadFactory

#include 
#include 
#include 
#include 

using namespace ::apache::thrift;
using namespace ::apache::thrift::protocol;
using namespace ::apache::thrift::transport;
using namespace ::apache::thrift::server;
using namespace ::apache::thrift::concurrency;

using boost::shared_ptr;

int port = 9090;
shared_ptr handler(new TestHandler());
shared_ptr processor(new TestProcessor(handler));
shared_ptr serverTransport(new TServerSocket(port));
shared_ptr transportFactory(new TBufferedTransportFactory());
shared_ptr protocolFactory(new TBinaryProtocolFactory());
try
{
		shared_ptr threadManager =ThreadManager::newSimpleThreadManager(10);
		boost::shared_ptr threadFactory = boost::shared_ptr(new PlatformThreadFactory());
		threadManager->threadFactory(threadFactory);
		threadManager->start();
		//TThreadPoolServer server(processor,serverTransport,transportFactory,protocolFactory,threadManager);//使用线程池
		TNonblockingServer server(processor,protocolFactory,port);

		printf("Starting the server...\n");
		server.serve();
		printf("done.\n");
}
catch (...)
{
	
}

你可能感兴趣的:(RPC)