• 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: Recurrent NSInvocationOperations on an NSOperationQueue?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Recurrent NSInvocationOperations on an NSOperationQueue?


  • Subject: Re: Recurrent NSInvocationOperations on an NSOperationQueue?
  • From: Roland King <email@hidden>
  • Date: Sat, 15 Aug 2015 10:13:54 +0800

>>
>
> Thanks, Ken. The reason I'm using a custom operation queue instead of GCD is that I need to permit only exclusive access to the device (e.g., to obtain its status requires writing to it), but allow other operations enqueued to use the device, not just the status checks. So I have an NSOperationQueue that has maxConcurrentOperationCount set to 1, but I need a status-check operation to be automatically queued up 1 minute after the last one has run.
>
> So, if the device is accessed otherwise the status checks won't interfere with that because only 1 operation can be active in the queue, thus everything stays well ordered and exclusive access is permitted to all, one at a time. I just can't figure a way to have the status check operation trigger another one to be magically enqueued 60 seconds later.
>
> -Carl


Quite a few ways to skin that cat.

Make every operation complete by adding a cleanup operation block to the queue. Have that block do nothing for 60 seconds but check the number of operations in the queue on a regular basis, if the number of operations rises above one, exit, if it gets to 60 seconds, perform cleanup. Wasteful but easy.

Make a dispatch_timer, just one, have the start of every operation set the timer to the distant future, at the end set it to 60 seconds, have the dispatch_timer toss the cleanup block on your queue. Or do a dispatch_test_cancel() at the start of the block, and set the timer to 60 seconds and dispatch_resume() at the end of the block, either works. 60 seconds after the last block finished executing, your cleanup block will run.
_______________________________________________

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


References: 
 >Recurrent NSInvocationOperations on an NSOperationQueue? (From: Carl Hoefs <email@hidden>)
 >Re: Recurrent NSInvocationOperations on an NSOperationQueue? (From: Ken Thomases <email@hidden>)
 >Re: Recurrent NSInvocationOperations on an NSOperationQueue? (From: Carl Hoefs <email@hidden>)
 >Re: Recurrent NSInvocationOperations on an NSOperationQueue? (From: Carl Hoefs <email@hidden>)
 >Re: Recurrent NSInvocationOperations on an NSOperationQueue? (From: Ken Thomases <email@hidden>)
 >Re: Recurrent NSInvocationOperations on an NSOperationQueue? (From: Carl Hoefs <email@hidden>)

  • Prev by Date: Re: Recurrent NSInvocationOperations on an NSOperationQueue?
  • Next by Date: Re: Recurrent NSInvocationOperations on an NSOperationQueue?
  • Previous by thread: Re: Using alarm(3) on background NSOperationQueue threads
  • Next by thread: Referring to self in property initializer
  • Index(es):
    • Date
    • Thread