Jump to content

wooly

Newbies
  • Posts

    2
  • Joined

  • Last visited

Everything posted by wooly

  1. thanks for finding the time to answer this. Much appreciated. So I see the threads you mentioned under categories 1,2,3. Now there seems to be another group of threads there, which I described in my original post. >>Then there are 4 threads (poolthreads) that are occasionally active (They are drivn by async tasks enqueued by the main thread). (the main thread uses the Pdnlib's threadpooling APIs to control these 4 poolthreads). You didn't mention them I am guessing because they are not really involved in the rendering of an effect?? Q. So what are those guys for? (general servicing OnPaint etc stuff am I right?) Q. by the delicate controlling of rendering dispatch thread and the rendering threads (which helped the app avoid deadlocks) you are referring to the stuff in BackgroundEffectRenderer::Start, ::ThreadFunction, ::Abort (and the use of the threadShouldStop variable to communicate with the workers that they should stop). Is that right? Just want to know i am looking at the right place ;-) Thanks Woolly
  2. Goodday , This is a question for Rick B. I am very interested in efficient use of threads with multiproc setups. Was reading the articles about Paint.NET and multireading/dual-core optimization by Rick. There is a statement in there that says "This, as well as the thread synchronization that goes with the progressive effect rendering, is easily the most complex code in Paint.NET.....". (which I didn't quite understand coz I thought the work it divided up into disjoint "regions"). Now, I was able to probe a little bit into this (I did Gaussian blur of a photo) and check what was happening (Mine is a 2P HT Xeon) (bring out the Gaussian blur dialog and use the slider to switch to a big "number" and watch the processors get busy) There are 4 threads doing PaintDotnet.Effects.BlurEffect and it seems I could not detect any contention of locks (actually no calling of even monitor enter/exit) during the blurring at all. Then there are 4 threads (poolthreads) that are occasionally active (They are drivn by async tasks enqueued by the main thread). (the main thread uses the Pdnlib's threadpooling APIs to control these 4 poolthreads). So summarizing my Qs: 1. The first set of 4 threads actually doing the blur ::: is there really no need to synchronize anything between them? or did I miss their synchronization action...) and more importantly, 2. what is the "complex" synchronization being mentioned by the article then? (it is not merely referring to the thread(pool) helper classes in pdnlib??) thanks in advance, wooly.
×
×
  • Create New...