I have a computationally intensive modeling application which I NEED to
multi-process,  I am trying to avoid low level calls to pthread and tcb
block.

In order to get my GUI running I had to create a NSOperationQueue and run
my big method via a NSInvocationOperation.

Previous post indicates that NSOperationQueue only seems to work with ONE
queue.  So it seems that I can either have GUI working OR do
multi-processing...

The key is the waitUntilAllOperationsAreFinished method of MSOperationQueue.

I create a NSOperationQueue in  my intialization process in my
appController class.

I have a method triggered by user pushing button which calls:


- (IBAction)launchEvolveTask:(id)sender
{
        NSInvocationOperation* bigOp = [[NSInvocationOperation alloc]
initWithTarget:self selector:@selector(evolve:) object:nil];

        [myOpQueue addOperation:bigOp];
}

NOW in my evolve: method I have nested loops:

for(i = 0; i < MAX_GENS; i++)
{

   for(j = 0; j < NUM_MEMBERS; j++)
   {
        member = [someArray objectAtIndex:j];

        NSInvocationOperation *concurrentOp = [NSInvocationOperation
initWithTarger:member selector:processStuff:
object:sharedDataArray];

        [[appController opQueue] addOperation:concurrentOp];
    }

    [opQueue waitUntilAllOperationsAreFinished];  <-----
}


***** above method HAS to wait for the bigOp to finish too, which makes
the wait operation useless.

The only solution I have come up with so far is to launch my evolve:
NSInvocationOperation directly with the start method,  This means GUI
locks.

If I nest another NSOperationQueue instead of using appController's
NSOperationQueue the BUG forces a crash every time.

Evidently this is a KNOWN bug which is supposed to be fixed in 10.6

I am going to implement my own pthreads with a tcb block to go low-level
on this problem, but would LOVE to be able to use Apples high-level tools.

Any advice is welcomed.

Thankyou,

Ron





_______________________________________________

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