TDME2
1.9.200
src
tdme
network
udpserver
ServerWorkerThreadPool.cpp
Go to the documentation of this file.
1
#include <
tdme/network/udpserver/ServerWorkerThreadPool.h
>
2
3
#include <memory>
4
#include <vector>
5
6
#include <
tdme/tdme.h
>
7
#include <
tdme/network/udpserver/ServerRequest.h
>
8
#include <
tdme/network/udpserver/ServerWorkerThread.h
>
9
#include <
tdme/os/threading/Barrier.h
>
10
#include <
tdme/os/threading/Queue.h
>
11
12
using
std::make_unique;
13
using
std::vector;
14
using
std::unique_ptr;
15
16
using
tdme::network::udpserver::ServerWorkerThreadPool
;
17
18
using
tdme::network::udpserver::ServerRequest
;
19
using
tdme::os::threading::Barrier
;
20
using
tdme::os::threading::Queue
;
21
22
ServerWorkerThreadPool::ServerWorkerThreadPool(
const
unsigned
int
workerCount,
const
unsigned
int
maxElements,
Barrier
* startUpBarrier) :
23
Queue
<
ServerRequest
>(maxElements),
24
workerCount(workerCount),
25
startUpBarrier(startUpBarrier) {
26
//
27
}
28
29
ServerWorkerThreadPool::~ServerWorkerThreadPool
() {
30
}
31
32
void
ServerWorkerThreadPool::start
() {
33
worker
.resize(
workerCount
);
34
for
(
auto
i = 0; i <
workerCount
; i++) {
35
worker
[i] = make_unique<ServerWorkerThread>(i,
this
,
startUpBarrier
);
36
worker
[i]->start();
37
}
38
}
39
40
void
ServerWorkerThreadPool::stop
() {
41
// stop queue
42
Queue<ServerRequest>::stop
();
43
44
// stop worker
45
for
(
auto
i = 0; i <
worker
.size(); i++) {
46
// wait until worker has finished
47
worker
[i]->join();
48
}
49
//
50
worker
.clear();
51
}
Barrier.h
Queue.h
ServerRequest.h
ServerWorkerThreadPool.h
ServerWorkerThread.h
tdme::network::udpserver::ServerRequest
Server request bean.
Definition:
ServerRequest.h:24
tdme::network::udpserver::ServerWorkerThreadPool
Simple server worker thread pool class.
Definition:
ServerWorkerThreadPool.h:28
tdme::network::udpserver::ServerWorkerThreadPool::~ServerWorkerThreadPool
virtual ~ServerWorkerThreadPool()
Public destructor.
Definition:
ServerWorkerThreadPool.cpp:29
tdme::network::udpserver::ServerWorkerThreadPool::worker
vector< unique_ptr< ServerWorkerThread > > worker
Definition:
ServerWorkerThreadPool.h:60
tdme::network::udpserver::ServerWorkerThreadPool::start
void start()
Start worker thread pool.
Definition:
ServerWorkerThreadPool.cpp:32
tdme::network::udpserver::ServerWorkerThreadPool::stop
void stop()
Stop worker thread pool.
Definition:
ServerWorkerThreadPool.cpp:40
tdme::network::udpserver::ServerWorkerThreadPool::workerCount
unsigned int workerCount
Definition:
ServerWorkerThreadPool.h:59
tdme::network::udpserver::ServerWorkerThreadPool::startUpBarrier
Barrier * startUpBarrier
Definition:
ServerWorkerThreadPool.h:58
tdme::os::threading::Barrier
Barrier implementation.
Definition:
Barrier.h:21
tdme::os::threading::Queue
Consumer/producer queue.
Definition:
Queue.h:26
tdme.h
Generated by
1.9.1