From edd3d5f3545401868af62cebb4b33f5c73686b52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9F=D0=B5=D0=BB=D0=B8=D0=BF=D0=B5=D0=BD=D0=BA=D0=BE=20?= =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD?= Date: Tue, 7 Apr 2015 10:47:59 +0000 Subject: [PATCH] TimerPool fixoutManipulator git-svn-id: svn://db.shs.com.ru/pip@70 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5 --- src/io/pibasetransfer.cpp | 2 +- src/thread/pitimer.cpp | 9 +++++++-- src/thread/pitimer.h | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/io/pibasetransfer.cpp b/src/io/pibasetransfer.cpp index db342d1c..8e2c846f 100644 --- a/src/io/pibasetransfer.cpp +++ b/src/io/pibasetransfer.cpp @@ -152,7 +152,7 @@ bool PIBaseTransfer::send_process() { state_string = "sending"; PITimeMeasurer stm; send_tm.reset(); - int ltm = 0; + //int ltm = 0; for (int i = 0; i < session.size_s(); i++) { if (send_queue >= packets_count) { --i; diff --git a/src/thread/pitimer.cpp b/src/thread/pitimer.cpp index 6a640d49..f0731358 100755 --- a/src/thread/pitimer.cpp +++ b/src/thread/pitimer.cpp @@ -309,8 +309,10 @@ _PITimerImp_Pool::Pool * _PITimerImp_Pool::Pool::instance() { void _PITimerImp_Pool::Pool::add(_PITimerImp_Pool * t) { //piCout << "add ..."; lock(); - if (!timers.contains(t)) + if (!timers.contains(t)) { timers << t; + to_remove.removeOne(t); + } unlock(); //piCout << "add done"; } @@ -319,7 +321,7 @@ void _PITimerImp_Pool::Pool::add(_PITimerImp_Pool * t) { void _PITimerImp_Pool::Pool::remove(_PITimerImp_Pool * t) { //piCout << "remove ..."; lock(); - timers.removeOne(t); + to_remove.removeOne(t); unlock(); //piCout << "remove done"; } @@ -328,6 +330,9 @@ void _PITimerImp_Pool::Pool::remove(_PITimerImp_Pool * t) { void _PITimerImp_Pool::Pool::run() { piForeach (_PITimerImp_Pool * t, timers) t->threadFunc(); + piForeach (_PITimerImp_Pool * t, to_remove) + timers.removeOne(t); + to_remove.clear(); //while (t->threadFunc()); } diff --git a/src/thread/pitimer.h b/src/thread/pitimer.h index a0a07dcb..78bf68a1 100755 --- a/src/thread/pitimer.h +++ b/src/thread/pitimer.h @@ -120,7 +120,7 @@ private: void add(_PITimerImp_Pool * t); void remove(_PITimerImp_Pool * t); void run(); - PIVector<_PITimerImp_Pool * > timers; + PIVector<_PITimerImp_Pool * > timers, to_remove; }; virtual bool startTimer(double interval_ms); virtual bool stopTimer();