server.cpp

来自「ace开发环境 用来开发网络程序 其运用了设计模式、多平台、C++等多种知识」· C++ 代码 · 共 67 行

CPP
67
字号
/* * ACE reactor demonstration * * $Id: server.cpp 71351 2006-03-01 23:48:42Z shuston $ * Date: 26-Jan-2006 */#include <ace/Event_Handler.h>#include <ace/Log_Msg.h>#include <ace/OS.h>#include <ace/Reactor.h>#include <ace/Signal.h>#include <ace/streams.h>#include <ace/Thread_Manager.h>#include <ace/TP_Reactor.h>#include "AcceptHandler.h"/** * This is the function run by all threads in the thread pool. * * @param arg is expected to be of type (ACE_Reactor *) */ACE_THR_FUNC_RETURN threadFunc(void *arg) {    ACE_TRACE("threadFunc(void *)");    ACE_Reactor *reactor = (ACE_Reactor *) arg;    reactor->run_reactor_event_loop();    return 0;}/** * The main function sets up the TP reactor. The code is basically taken from * the solution to exercise 4c of the ACE course. */int ACE_TMAIN(int, ACE_TCHAR **) {    // create a reactor from a TP reactor    ACE_TP_Reactor tpReactor;    ACE_Reactor reactor(&tpReactor);    // create a new accept handler using that reactor    AcceptHandler *acceptHandler = 0;    ACE_NEW_NORETURN (acceptHandler, AcceptHandler(&reactor));    if (acceptHandler == 0)      ACE_ERROR_RETURN((LM_ERROR, ACE_TEXT("%N:%l: Failed to allocate ")                        ACE_TEXT ("accept handler. (errno = %i: %m)\n"), errno), -1);    // open the accept handler    if (acceptHandler->open() == -1) {        delete acceptHandler;        ACE_ERROR_RETURN((LM_ERROR, ACE_TEXT("%N:%l: Failed to open accept ")                          ACE_TEXT ("handler. Exiting.\n")), -1);    }    // spawn some threads which run the reactor event loop(s)    ACE_Thread_Manager::instance()->spawn_n(9, threadFunc, &reactor);    // let the thread manager wait for all threads    ACE_Thread_Manager::instance()->wait();    ACE_DEBUG((LM_DEBUG, ACE_TEXT("Bye. Bye.\n")));    return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?