Hi,

Yes, the documentation is wrong or confusing at best, I’ve tried it, it doesn’t 
work. I think it’s meant for a number of operations that need to wait for the 
preceding operation to complete before the next one continues.

I also wondered if the NSOperation “waitUntilFinished” method might work, but 
it doesn’t seem to either. I’m about to revisit this, I did the testing a while 
back but had to leave it to get something else done. I’ve got a few more things 
I need to do this morning and then I’ll be at a point where I can investigate 
again.

About your dispatch semaphore suggestion, do you mean use it instead of an 
NSOperation or as well as?

Thanks a lot
Dave

On 3 Jun 2014, at 22:54, Jeffrey Robert Kelley <slauncha...@gmail.com> wrote:

> That’s not what the documentation says:
> 
>> If YES, the current thread is blocked until all of the specified operations 
>> finish executing. If NO, the operations are added to the queue and control 
>> returns immediately to the caller.
> 
> 
> So, if you’re experiencing different behavior, I would say that’s a bug that 
> should be filed.
> 
> That doesn’t solve your question, though. Have you tried using dispatch 
> semaphores? They’re a pretty easy way to synchronize tasks:
> 
>> dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
>> 
>> [self performLongRunningAsynchronousTaskWithCompletionHandler:^{
>>      dispatch_semaphore_signal(semaphore);
>> }];
>> 
>> dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
> 
> 
> dispatch_semaphore_wait() will block until the semaphore is signaled at the 
> end of the block.
> 
> 
> Jeff Kelley
> 
> slauncha...@gmail.com | @SlaunchaMan | jeffkelley.org
> 
> On Jun 3, 2014, at 12:17 PM, Dave <d...@looktowindward.com> wrote:
> 
>> I’ve tried that, addOperations:waitUntilFinished: waits for operations 
>> currently queued to finish before adding the current operation, it doesn’t 
>> Add it to the queue and then wait for it to complete which is what I want.
>> 
>> Thanks
>> Dave
>> 
>> On 3 Jun 2014, at 19:26, Jeffrey Robert Kelley <slauncha...@gmail.com> wrote:
>> 
>>> I think you’re looking for NSOperationQueue’s 
>>> -addOperations:waitUntilFinished: method. Should do what you want.
>>> 
>>> 
>>> Jeff Kelley
>>> 
>>> slauncha...@gmail.com | @SlaunchaMan | jeffkelley.org
>>> 
>>> On Jun 3, 2014, at 5:51 AM, Dave <d...@looktowindward.com> wrote:
>>> 
>>>> Hi,
>>>> 
>>>> I think this has been covered before, but all the searches I’ve done don’t 
>>>> really cover what I’d like to do.
>>>> 
>>>> I have an API that has two modes of operation, Sync and Async.
>>>> 
>>>> In Sync mode calls to the API MUST be on a background thread and the data 
>>>> is returned to the caller with a possibility that the thread is blocked 
>>>> until the operation has completed.
>>>> 
>>>> In Async mode calls to the API may be on the background thread or the Main 
>>>> Thread, a delegate is passed to the API method which returns immediately 
>>>> and the Delegate is called when the operation completes or fails.
>>>> 
>>>> This all works, however I have some existing code that I’d like to have 
>>>> the same API and be called by a “Manager Class” which calls the correct 
>>>> underlying API depending on the context, e.g.
>>>> 
>>>> AppLayer—>ManagerClass—>API_A
>>>>                                          —>API_B
>>>> 
>>>> API_A is the existing API supporting the Sync/Async interface.
>>>> API_B is the one I wish to create.
>>>> 
>>>> The problem is that the existing code uses NSOperationQueue/NSOperation 
>>>> accomplish it’s task, this works fine in Async mode, it was easy enough to 
>>>> adapt to call the Delegate methods, but I’m not sure how to implement Sync 
>>>> mode?
>>>> 
>>>> Basically I want to add the NSOperation to the queue and then wait for it 
>>>> to complete before returning with the results.
>>>> 
>>>> Any ideas suggestions would be greatly appreciated as there seem to be a 
>>>> lot of conflicting advice out there on how to do this and I’ve not been 
>>>> able to find anything worked as described above.
>>>> 
>>>> Thanks a lot.
>>>> 
>>>> All the Best
>>>> Dave
>>>> 
>>>> 
>>>> _______________________________________________
>>>> 
>>>> 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:
>>>> https://lists.apple.com/mailman/options/cocoa-dev/slaunchaman%40gmail.com
>>>> 
>>>> This email sent to slauncha...@gmail.com
>>> 
>>> _______________________________________________
>>> 
>>> 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:
>>> https://lists.apple.com/mailman/options/cocoa-dev/dave%40looktowindward.com
>>> 
>>> This email sent to d...@looktowindward.com
>> 
>> 
>> _______________________________________________
>> 
>> 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:
>> https://lists.apple.com/mailman/options/cocoa-dev/slaunchaman%40gmail.com
>> 
>> This email sent to slauncha...@gmail.com
> 
> _______________________________________________
> 
> 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:
> https://lists.apple.com/mailman/options/cocoa-dev/dave%40looktowindward.com
> 
> This email sent to d...@looktowindward.com


_______________________________________________

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

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

Reply via email to