Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include "worker.h"
#include "TSystem.h"
#include <QFile>
#include <QString>
#include <QTextStream>
#include <QDebug>
void Worker::run()
{
// simulate some cones
// or import cones from file
QFile conefile(config->conefilePath.c_str());
if (!conefile.open(QIODevice::ReadOnly | QIODevice::Text))
{
throw std::invalid_argument("Cannot find file: " + config->conefilePath);
}
QString line;
QTextStream in(&conefile);
// skip header (first line)
in.readLineInto(&line);
ulong counts(0);
while(!stop) {
//some work to get data (read board or file)
int i(0);
while (!stop && i < config->chuckSize && in.readLineInto(&line))
{
coneQueue->enqueue(Cone(line));
i++;
}
counts+=i;
if (stop || line.isNull() || counts >= config->maxN)
{
break;
}
while (!stop && coneQueue->size_approx() >= config->capacity)
{
gSystem->Sleep(50);
}
}
conefile.close();
qDebug() << "Worker thread exited.";
}
void Worker::stopExecution()
{
stop = true;
}