I'm wondering about the timing of NSOperationQueue emptying.

In my Objective-C++ (Leopard) app, I have one opQueue of operations and the
very last thing each operation does is enqueue the results of a computation
back to the main thread.

NSPointerArray *ptr = [NSPointerArray pointerArrayWithStrongObjects];
[ptr addPointer:&PL];
[mainQueue enqueueNotification:[NSNotification
notificationWithName:@"compNotif"
    object:ptr]
    postingStyle:NSPostNow];
} // end of main()

I use NSPostNow instead of NSPostWhenIdle because the latter never posts!
(reason unknown)  Also, I have garbage collection *required* and do not have
any retain/release statements anywhere.

PL, the output data, is a local std::list [C++ default Ctors/Dtors is
checked.] and the main thread collects these in a list of lists until all
have been collected at which point all NSOperations *should* be finished.

They aren't -- even though I use a separate countdown int as the sentinel.

Each time through the whole process, one operation (not always the same one)
remains in the opQueue, and isFinishd == NO, at the point when the opQueue
is due to be filled up again.  [It is almost always one of the last
operations pushed onto the opQueue.]  If I then
waitUntilAllOperationsAreFinished, the program hangs forever.  Apparently,
this last operation never finishes although the other 1300 operations do and
they are all the same apart from input data.

Question: In Leopard, does an NSOperationQueue send a signal of its own when
an operation is terminating, something analogous to
applicationDidFinishLaunching?  Could garbage collection be postponing the
queue clearing?  I could not find any function that would force clearing the
opQueue.  Is there one?

BTW, I cannot use Snow Leopard for this, at least at work, because I have
only a G5.

-- 
Mike McLaughlin

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to