C++ (Qt)void myThread::run() { for(int i=0; i<dataSize; ++i) { obj->func(i); ... stopped = false; while( !stopped ) {} }}
f1(){if (i >= dataSize())quit;obj->func(i);}f2(){++i;f1();}run(){i = 0;f1();exec();}
void myThread::run() { for(int i=0; i<dataSize; ++i) { obj->func(i); ... QMutex m; m.lock(); waitCondition.wait( &m ); }}
C++ (Qt) stopped = false; while( !stopped ) {}
C++ (Qt)void myThread::run() { for(int i=0; i<dataSize; ++i) { obj->func(i); ... // что если stopped = true будет в этот момент? stopped = false; // или в этот? while( !stopped ) {} // а не в этот как рассчитывали }}
C++ (Qt)QSemaphore theSemaphore;...void myThread::run() { for(int i=0; i<dataSize; ++i) { theSemaphore.acquire(); obj->func(i); }}
theSemaphore.release();
C++ (Qt)void myThread::run() { QMutex m; for(int i=0; i<dataSize; ++i) { m.lock(); obj->func(i); ... waitCondition.wait( &m ); m.unlock(); }}
bool stopped;QMutex stoppedMutex;void setStopped(bool _s){ stoppedMutex.lock(); stopped = _s; stoppedMutex.unLock();}bool sStopped(){ stoppedMutex.lock(); return stopped; stoppedMutex.unLock();}void run(){ ... while( !isStopped() ) { sleep(1); } // а не в этот как рассчитывали ...}
C++ (Qt)bool sStopped(){ stoppedMutex.lock(); return stopped; stoppedMutex.unLock(); }