Re: Recurrent NSInvocationOperations on an NSOperationQueue?
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