File: DeleteTest.cpp

package info (click to toggle)
kde4libs 4%3A4.14.26-2
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 83,084 kB
  • ctags: 99,791
  • sloc: cpp: 763,588; xml: 12,007; ansic: 5,224; java: 4,060; perl: 2,938; yacc: 2,484; python: 1,219; sh: 1,174; ruby: 337; lex: 278; makefile: 32
file content (67 lines) | stat: -rw-r--r-- 1,421 bytes parent folder | download | duplicates (5)
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include "DeleteTest.h"

#include <QtCore/QChar>

#include <QtCore/QObject>
#include <QtCore/QThread>
#include <QtCore/QDebug>
#include <QtTest/QtTest>

#include <Job.h>
#include <State.h>
#include <QueuePolicy.h>
#include <JobSequence.h>
#include <JobCollection.h>
#include <DebuggingAids.h>
#include <WeaverObserver.h>
#include <DependencyPolicy.h>
#include <ResourceRestrictionPolicy.h>

#include <ThreadWeaver.h>
#include <Thread.h>

#include "AppendCharacterJob.h"

int main(int argc, char **argv)
{
  DeleteTest dt(argc, argv);
  return dt.exec();
}

DeleteTest::DeleteTest(int argc, char **argv)
  : QCoreApplication(argc, argv)
{
  ThreadWeaver::setDebugLevel ( true,  1 );

  ThreadWeaver::Weaver::instance()->setMaximumNumberOfThreads(4);

  m_finishCount = 100;

  for (int i = 0; i < 100; ++i) {
    ThreadWeaver::JobSequence* jobSeq = new ThreadWeaver::JobSequence( this );
    connect ( jobSeq, SIGNAL(done(ThreadWeaver::Job*)),
              SLOT(deleteSequence(ThreadWeaver::Job*)) );

    jobSeq->addJob( new BusyJob );
    jobSeq->addJob( new BusyJob );

    ThreadWeaver::Weaver::instance()->enqueue( jobSeq );
  }

  ThreadWeaver::Weaver::instance()->resume();
}

void DeleteTest::deleteSequence(ThreadWeaver::Job* job)
{
  Q_ASSERT(job);
  delete job;

  QMutexLocker lock(&m_finishMutex);
  --m_finishCount;
  if (m_finishCount == 0)
    exit(0);
}

QMutex s_GlobalMutex;

#include "DeleteTest.moc"