SVC_HANDLER
based on multiprocessing.
#include <ace/ACE_Strategies_T.h>
template<class SVC_HANDLER> class ACE_Process_Strategy : public ACE_Concurrency_Strategy<SVC_HANDLER> {
public:
ACE_Process_Strategy ( size_t n_processes = 1, ACE_Event_Handler *acceptor = 0, ACE_Reactor * = 0, int avoid_zombies = 0 );
virtual int open ( size_t n_processes = 1, ACE_Event_Handler *acceptor = 0, ACE_Reactor * = 0, int avoid_zombies = 0 );
virtual ~ACE_Process_Strategy (void);
virtual int activate_svc_handler ( SVC_HANDLER *svc_handler, void *arg = 0 );
void dump (void) const;
ACE_ALLOC_HOOK_DECLARE;
protected:
typedef ACE_Concurrency_Strategy<SVC_HANDLER> inherited;
size_t n_processes_;
ACE_Event_Handler *acceptor_;
ACE_Reactor *reactor_;
};
ACE::fork
to fork
threads "on-demand" to run the service specified by a
user-supplied SVC_HANDLER
in a separate process.
ACE_Process_Strategy (
size_t n_processes = 1,
ACE_Event_Handler *acceptor = 0,
ACE_Reactor * = 0,
int avoid_zombies = 0
);
avoid_zombies
is non-0 then set a
flag to ACE::fork
to avoid zombies.
virtual int open (
size_t n_processes = 1,
ACE_Event_Handler *acceptor = 0,
ACE_Reactor * = 0,
int avoid_zombies = 0
);
avoid_zombies
is non-0 then set a
flag to ACE::fork
to avoid zombies.
virtual ~ACE_Process_Strategy (void);
virtual int activate_svc_handler (
SVC_HANDLER *svc_handler,
void *arg = 0
);
svc_handler
with an appropriate concurrency
strategy. This method activates the SVC_HANDLER by first forking
and then calling the open
method of the SVC_HANDLER in the
child.
void dump (void) const;
ACE_ALLOC_HOOK_DECLARE;