Re: Inter-thread communication with NSPort
Jeremy Tregunna <[email protected]>
| Newsgroups | gmane.comp.lib.gnustep.general,gmane.comp.lib.gnustep.user |
|---|---|
| Message-ID | <[email protected]> |
Curious why nobody has written a Coroutine framework for Cocoa/ GNUstep. Coroutines would scale a lot better in this case. -- Jeremy Tregunna [email protected] On 3-Feb-07, at 3:44 AM, Richard Frith-Macdonald wrote: > > On 3 Feb 2007, at 07:32, Tima wrote: > >> Hi, >> >> I'm trying to make a client-server application in GNUstep. >> Right now it seems that the best way to do the client is to >> make it a two-threaded application, with a main thread processing >> GUI events and a "worker" thread waiting and reading messages >> from socket-related NSInputStream. >> >> I want the worker thread to notify the main one when the message >> is ready. >> After reading Apple documentation for some time I got an impression >> that I need to send message to main thread's NSPort, it will be >> delivered >> via -handlePortMessage: method of the port's delegate. >> >> First of all, is it really the intended way to do communication >> between threads? > > No ... you should use distributed objects over an NSConnection. > While in theory you can work with ports directly, it's certainly > not recommended and is considerably more complex for you to code > than using NSConnections. > > However, fort the one-way communication you describe, probably the > simplest and most efficient option would be for your worker thread > to use the - > performSelectorOnMainThread:withObject:waitUntilDone:modes: method > of NSObject. > > PS. I think you probably have the ports the wrong way round in your > port message. > > > _______________________________________________ > Discuss-gnustep mailing list > [email protected] > http://lists.gnu.org/mailman/listinfo/discuss-gnustep > > !DSPAM:45c44b5b746845209328925! > _______________________________________________ Discuss-gnustep mailing list [email protected] http://lists.gnu.org/mailman/listinfo/discuss-gnustep