Add IWorker, Handle, SingleWorker, Worker classes.
This commit is contained in:
parent
b772349f69
commit
29aa466023
13 changed files with 358 additions and 12 deletions
26
src/App.cpp
26
src/App.cpp
|
@ -35,6 +35,8 @@
|
|||
#include "Options.h"
|
||||
#include "Summary.h"
|
||||
#include "version.h"
|
||||
#include "workers/Handle.h"
|
||||
#include "workers/SingleWorker.h"
|
||||
|
||||
|
||||
|
||||
|
@ -45,6 +47,8 @@ App::App(int argc, char **argv)
|
|||
|
||||
m_options = Options::parse(argc, argv);
|
||||
m_network = new Network(m_options);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -71,6 +75,8 @@ App::exec()
|
|||
Mem::allocate(m_options->algo(), m_options->threads(), m_options->doubleHash());
|
||||
Summary::print();
|
||||
|
||||
startWorders();
|
||||
|
||||
m_network->connect();
|
||||
|
||||
const int r = uv_run(uv_default_loop(), UV_RUN_DEFAULT);
|
||||
|
@ -78,3 +84,23 @@ App::exec()
|
|||
|
||||
return r;
|
||||
}
|
||||
|
||||
|
||||
void App::startWorders()
|
||||
{
|
||||
for (int i = 0; i < m_options->threads(); ++i) {
|
||||
Handle *handle = new Handle(i);
|
||||
m_workers.push_back(handle);
|
||||
handle->start(App::onWorkerStarted);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void *App::onWorkerStarted(void *arg)
|
||||
{
|
||||
auto handle = static_cast<Handle*>(arg);
|
||||
IWorker *worker = new SingleWorker(handle);
|
||||
worker->start();
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue