Adding ThreadWeaver libraries to kdelibs

Simon Hausmann hausmann at kde.org
Wed Sep 6 18:01:40 BST 2006


On Tuesday 5. September 2006 21:35, Mirko Boehm wrote:
> Hi folks,
>
> I think ThreadWeaver is ready for prime time. If you haven't followed it:
> ThreadWeaver is a job queue that had advanced capabilities for automatic
> scheduling of application operations. As far as I know, kdevelop, koffice
> and kdepim are using it or plan to use it as soon as it is commonly
> available.
>
> ThreadWeaver is developed in kdenonbeta at the moment, and usually snapshot
> and point-released when it reaches a certain new useful state. It is
> tested, known to be stable, and comes with a set of unit tests.
>
> I would like to suggest to add the two main libraries - the Weaver library
> that contains the job queue and surrounding classes, and the WeaverGui
> library that holds everything that depends on QtGui, and the accompanying
> unit tests, into kdelibs. I guess it will be best to import the snapshot
> point releases into kdelibs, to maintain a state where everything works and
> is tested, and update as needed. I will take care of the updating.
>
> As for the rest, I would like to move it to kdesdk. Unstable versions
> should be kept and tagged and merged as needed.
>
> Please let me know what you think about it.

Looks great! A few minor API suggestions though:

JobCollection::jobListLength() -> jobCount(). Count is the common term used in 
Qt for numbering independent objects in a container. It also goes nicely with 
jobAt(i). Length on the other hand is used for things like QLineF::length.

It looks like some functions lack const: JobCollection::canBeExecuted(), 
*Policy::canRun(), hasUnresolvedDependencies().

ResourceRestrictionPolicy::cap: Lacks a getter, and I suggest a different 
name. Perhaps jobLimit or maximumJobCount. (compare leo:cap with leo:limit :)

Weaver{Interface}: I suggest to replace *NumberOfThreads with simply 
maximumThreadCount(), threadCount().

For the simplicty of the API (less classes) I also suggest to merge 
WeaverObserver with WeaverInterface, since WeaverObserver does not provide 
any functionality but just signals.

Also with WeaverThreadGrid I suggest to put all member variables into a 
d-pointer.

Job has isFinished() but also bool success(), which looks a bit ugly IMHO. 
Maybe it would be simpler to have a non-virtual exitStatus()/setExitStatus() 
property instead of the virtual success function. That's more extensible 
(with an enum instead of a virtual function that cannot be changed later) and 
it reads nicely:

if (job->isFinished() && job->exitStatus() == Job::ExitSuccess)

And perhaps isFinished() should just be called finished(). That's used more 
often in Qt these days than isFinished().

Simon
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: <http://mail.kde.org/pipermail/kde-core-devel/attachments/20060906/e8fdfce0/attachment.sig>


More information about the kde-core-devel mailing list