Re: Dispatch IO
Re: Dispatch IO
- Subject: Re: Dispatch IO
- From: Seth Willits <email@hidden>
- Date: Fri, 09 Aug 2013 13:14:17 -0700
On Aug 9, 2013, at 11:09 AM, Quincey Morris wrote:
>> One of my thoughts is to set the handler interval and check for the data size to be over my memory limit and if it is, set a flag and stall generation until it drops back below the memory limit which I would know the next time the handler is called and the data size is below the limit. I'm not sure if it this is a *good* strategy, but I can't think of anything else.
>
> I use GCD counting semaphores for this. The precise configuration depends on the structure of your data producers (whether each is a separately-queued GCD block, for example) and how data production operations are initiated (whether each creates its own successor, for example), and you may need multiple semaphore to control the data flow, but it's a very flexible approach that's also simple to implement. The only awkward part might be ensuring that things can be cancelled properly.
So I'm at least not the only doing it this way. Ok. It seems like an API extension would be logical and very useful here.
> Incidentally, keep in mind (from an earlier discussion on this list) that GCD semaphores initialized with a count greater than 0 will complain (incorrectly, IMO) if the current count is not the same as the initial count at deallocation time. The workaround is to create the semaphore with a zero count, and to immediately increment it to the desired value.
I'm in agreement with everything Greg said here.
--
Seth Willits
_______________________________________________
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