• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdelibs API Reference
  • KDE Home
  • Contact Us
 

ThreadWeaver

  • sources
  • kde-4.12
  • kdelibs
  • threadweaver
  • Weaver
ResourceRestrictionPolicy.cpp
Go to the documentation of this file.
1 /* -*- C++ -*-
2 
3  This file implements the ResourceRestrictionPolicy class.
4 
5  $ Author: Mirko Boehm $
6  $ Copyright: (C) 2004-2013 Mirko Boehm $
7  $ Contact: mirko@kde.org
8  http://www.kde.org
9  http://creative-destruction.me $
10 
11  This library is free software; you can redistribute it and/or
12  modify it under the terms of the GNU Library General Public
13  License as published by the Free Software Foundation; either
14  version 2 of the License, or (at your option) any later version.
15 
16  This library is distributed in the hope that it will be useful,
17  but WITHOUT ANY WARRANTY; without even the implied warranty of
18  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19  Library General Public License for more details.
20 
21  You should have received a copy of the GNU Library General Public License
22  along with this library; see the file COPYING.LIB. If not, write to
23  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
24  Boston, MA 02110-1301, USA.
25 
26  $Id: Job.h 32 2005-08-17 08:38:01Z mirko $
27 */
28 
29 #include "ResourceRestrictionPolicy.h"
30 
31 #include <QtCore/QList>
32 #include <QtCore/QMutex>
33 
34 #include "DebuggingAids.h"
35 
36 using namespace ThreadWeaver;
37 
38 class ResourceRestrictionPolicy::Private
39 {
40 public:
41  Private ( int theCap )
42  : cap ( theCap)
43  {}
44 
45  int cap;
46  QList<Job*> customers;
47  QMutex mutex;
48 };
49 
50 ResourceRestrictionPolicy::ResourceRestrictionPolicy ( int cap)
51  : QueuePolicy ()
52  , d (new Private (cap))
53 {
54 }
55 
56 ResourceRestrictionPolicy::~ResourceRestrictionPolicy()
57 {
58  delete d;
59 }
60 
61 void ResourceRestrictionPolicy::setCap (int cap)
62 {
63  QMutexLocker l ( & d->mutex );
64  d->cap = cap;
65 }
66 
67 int ResourceRestrictionPolicy::cap() const
68 {
69  QMutexLocker l ( & d->mutex );
70  return d->cap;
71 }
72 
73 bool ResourceRestrictionPolicy::canRun( Job* job )
74 {
75  QMutexLocker l ( & d->mutex );
76  if ( d->customers.size() < d->cap )
77  {
78  d->customers.append( job );
79  return true;
80  } else {
81  return false;
82  }
83 }
84 
85 void ResourceRestrictionPolicy::free ( Job* job )
86 {
87  QMutexLocker l ( & d->mutex );
88  int position = d->customers.indexOf (job);
89 
90  if (position != -1)
91  {
92  debug ( 4, "ResourceRestrictionPolicy::free: job %p done.\n", (void*)job );
93  d->customers.removeAt (position);
94  }
95 }
96 
97 void ResourceRestrictionPolicy::release ( Job* job )
98 {
99  free (job);
100 }
101 
102 void ResourceRestrictionPolicy::destructed ( Job* job )
103 {
104  free (job);
105 }
ThreadWeaver::ResourceRestrictionPolicy::cap
int cap() const
Definition: ResourceRestrictionPolicy.cpp:67
ThreadWeaver::ResourceRestrictionPolicy::setCap
void setCap(int newCap)
Cap the number of simulataniously executing jobs.
Definition: ResourceRestrictionPolicy.cpp:61
ThreadWeaver::ResourceRestrictionPolicy::free
void free(Job *)
free() is called after the job has been executed.
Definition: ResourceRestrictionPolicy.cpp:85
ThreadWeaver::ResourceRestrictionPolicy::release
void release(Job *)
release() is called if canRun() returned true, but the job has not been executed for external reasons...
Definition: ResourceRestrictionPolicy.cpp:97
ResourceRestrictionPolicy.h
ThreadWeaver::ResourceRestrictionPolicy::destructed
void destructed(Job *)
destructing() is called when a Job that has this queue policy assigned gets destructed.
Definition: ResourceRestrictionPolicy.cpp:102
DebuggingAids.h
ThreadWeaver::ResourceRestrictionPolicy::canRun
bool canRun(Job *)
canRun() is called before the job is executed.
Definition: ResourceRestrictionPolicy.cpp:73
ThreadWeaver::debug
void debug(int severity, const char *cformat,...)
This method prints a text message on the screen, if debugging is enabled.
Definition: DebuggingAids.h:112
ThreadWeaver::ResourceRestrictionPolicy::ResourceRestrictionPolicy
ResourceRestrictionPolicy(int cap=0)
Definition: ResourceRestrictionPolicy.cpp:50
ThreadWeaver::QueuePolicy
QueuePolicy is an interface for customizations of the queueing behaviour of sets of jobs...
Definition: QueuePolicy.h:59
ThreadWeaver::ResourceRestrictionPolicy::~ResourceRestrictionPolicy
~ResourceRestrictionPolicy()
Definition: ResourceRestrictionPolicy.cpp:56
ThreadWeaver::Job
A Job is a simple abstraction of an action that is to be executed in a thread context.
Definition: Job.h:65
QList
Definition: DependencyPolicy.h:32
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:48:53 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

ThreadWeaver

Skip menu "ThreadWeaver"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdelibs API Reference

Skip menu "kdelibs API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  • kjsembed
  •   WTF
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Nepomuk-Core
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal