git-svn-id: svn://db.shs.com.ru/pip@276 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5

This commit is contained in:
2016-10-06 12:38:32 +00:00
parent 6166ec5931
commit 03ffe5d6bc

View File

@@ -33,7 +33,7 @@ public:
PIPipelineThread() {
cnt = 0;
max_size = 0;
wait_next_pipe = true;
wait_next_pipe = false;
next_overload = false;
}
~PIPipelineThread() {
@@ -48,7 +48,8 @@ public:
EVENT_HANDLER1(void, enqueue, const Tin &, v) {enqueue(v, 0);}
EVENT_HANDLER2(void, enqueue, const Tin &, v, bool *, overload) {
mutex.lock();
if (max_size > 0 && in.size() < max_size) {
// piCout << "enque" << max_size << in.size();
if (max_size == 0 || in.size() < max_size) {
in.enqueue(v);
if (overload) *overload = false;
} else {
@@ -104,7 +105,7 @@ public:
void setMaxQueSize(uint count) {
mutex.lock();
count = max_size;
max_size = count;
if (max_size > 0 && in.size() > max_size) in.resize(max_size);
mutex.unlock();
}
@@ -125,17 +126,20 @@ private:
return;
}
if (next_overload && wait_next_pipe) {
mutex.unlock();
calculated(last, &next_overload);
piMSleep(10);
} else {
Tin t = in.dequeue();
bool ok = true;
mutex.unlock();
bool ok = true;
Tout r = calc(t, ok);
if (ok) {
mutex_l.lock();
last = r;
mutex_l.unlock();
cnt++;
// next_overload = true;
calculated(r, &next_overload);
}
}