Re: Any actor or coroutine implementations for Cocoa?
Re: Any actor or coroutine implementations for Cocoa?
- Subject: Re: Any actor or coroutine implementations for Cocoa?
- From: "Michael Ash" <email@hidden>
- Date: Wed, 30 Apr 2008 18:35:01 -0400
On Wed, Apr 30, 2008 at 5:37 PM, Jens Alfke <email@hidden> wrote:
>
> On 30 Apr '08, at 12:35 PM, Michael Ash wrote:
>
>
> > This doesn't work because you can have multiple sheets which get
> > dismissed out of order.
> > For example, method X shows sheet A, method Y shows sheet B, user
> > dismisses sheet A. Now you need to return back to method X but method
> > Y is still on the call stack.
> >
>
> That's what would happen without coroutines. But with coroutines it's no
> problem, because X and Y aren't on the same call stack:
>
> Coroutine 1 is running:
> ...
> method X calls runSheet(A)
> runSheet displays the sheet, then blocks and transfers control
> Now coroutine 2 is running:
> ...
> method Y calls runSheet(B)
> runSheet displays the sheet, then blocks and transfers control
> Main coroutine is running:
> ...events being handled...
> User clicks on OK button in sheet A
> Main coroutine wakes up coroutine 1
> Coroutine 1 is running:
> sheet goes away, runSheet(A) returns
> back to method X
> ...
>
> The main coroutine would handle the runloop and events as usual. But it
> would respond to events by messaging their associated coroutines/actors.
The goal was to use coroutines to give sheets a modal interface
without changing the rest of the application's structure. Therefore
the sheet-calling code would still run on the main thread, preventing
this use of coroutines. If you run all of your coroutines on secondary
threads and proxy back to the main thread then you can do this kind of
thing, but that adds a great deal of additional complication.
Mike
_______________________________________________
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