• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: iOS - NSOperation/NSOperationQueue Question
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: iOS - NSOperation/NSOperationQueue Question


  • Subject: Re: iOS - NSOperation/NSOperationQueue Question
  • From: Jeffrey Robert Kelley <email@hidden>
  • Date: Tue, 03 Jun 2014 14:54:48 -0700

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

email@hidden | @SlaunchaMan | jeffkelley.org

On Jun 3, 2014, at 12:17 PM, Dave <email@hidden> 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 <email@hidden> wrote:
>
>> I think you’re looking for NSOperationQueue’s -addOperations:waitUntilFinished: method. Should do what you want.
>>
>>
>> Jeff Kelley
>>
>> email@hidden | @SlaunchaMan | jeffkelley.org
>>
>> On Jun 3, 2014, at 5:51 AM, Dave <email@hidden> 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 (email@hidden)
>>>
>>> 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:
>>>
>>> This email sent to email@hidden
>>
>> _______________________________________________
>>
>> Cocoa-dev mailing list (email@hidden)
>>
>> 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:
>>
>> This email sent to email@hidden
>
>
> _______________________________________________
>
> Cocoa-dev mailing list (email@hidden)
>
> 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:
>
> This email sent to email@hidden

_______________________________________________

Cocoa-dev mailing list (email@hidden)

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:

This email sent to email@hidden


  • Follow-Ups:
    • Re: iOS - NSOperation/NSOperationQueue Question
      • From: Dave <email@hidden>
References: 
 >iOS - NSOperation/NSOperationQueue Question (From: Dave <email@hidden>)
 >Re: iOS - NSOperation/NSOperationQueue Question (From: Jeffrey Robert Kelley <email@hidden>)
 >Re: iOS - NSOperation/NSOperationQueue Question (From: Dave <email@hidden>)

  • Prev by Date: Re: Getters/Setters via Property/Synthesize...
  • Next by Date: Re: How to write a .icns file
  • Previous by thread: Re: iOS - NSOperation/NSOperationQueue Question
  • Next by thread: Re: iOS - NSOperation/NSOperationQueue Question
  • Index(es):
    • Date
    • Thread