Re: Threading problem using AsyncSocket (Matthew Youney)
Re: Threading problem using AsyncSocket (Matthew Youney)
- Subject: Re: Threading problem using AsyncSocket (Matthew Youney)
- From: email@hidden
- Date: Fri, 15 Aug 2008 13:58:06 +0100
Hi Matthew
The Cocoa docs have a lot of Info on threading and the run loop (you
are probably sick looking at them by now).
In particular see "Threading programming guide: Using run loop objects";
The section entitled Configuring the run loop says:
Before you run a run loop on a secondary thread, you must add at least
one input source or timer to it. If a run loop does not have any
sources to monitor, it exits immediately when you try to run it. For
examples of how to add sources to a run loop, see“Configuring Run Loop
Sources.”
That sentence sounds like it deserves attention.
Jonathan
On 14 Aug 2008, at 23:42, Matthew Youney wrote:
Jonathan,
The reason I need to thread is not anything to do with AsyncSocket,
which is
an excellent library that does not block. I have several time
consuming
operations that must occur sequentially. These sequences need to run
(start/stop) asynchronous of each other, so I want these to run in
separate
execution threads.
The "old school" way that I used to manage multiple asynchronous
sequences
like this was to use complex state machines, but I am sure that you
will
agree that separate threads is certainly the way to go.
I am just having difficulty getting my head around the run loop in the
worker threads. I have also tried the ThreadWorker library, that
although
has some awesome features, does not let my AsyncSocket objects run
properly.
And thanks, I appreciate any and all feedback,
Matt
-----Original Message-----
From: cocoa-dev-bounces+matt=email@hidden
[mailto:cocoa-dev-bounces+matt=email@hidden]On Behalf Of
email@hidden
Sent: Thursday, August 14, 2008 5:04 PM
To: email@hidden
Subject: Re: Threading problem using AsyncSocket (Matthew Youney)
I don't know about your threading problem but surely the whole point
of AsyncSocket is the Async bit.
It is designed to attach itself to the runloop and remove the need for
blocking sockets etc on threads.
I use AsyncSocket extensively within the main thread and it can handle
multiple connection without any problem.
Hello list,
This is my first attempt at threading with Cocoa, and I am having
difficu=
lty
with my classes that use AsyncSocket. I am using
DetachNewThreadSelector=
:
to detach my =91worker=92 thread, and I am instantiating my class
that us=
es
AsyncSocket from within this thread. The problem is that the
AsyncSocket
delegates are never called. This class works just fine from the main
thread.
- (IBAction)RunTestButtonPressed:(id)sender
{
[NSThread detachNewThreadSelector:
@selector(threadFunction:)
toTarget: self withObject: recipe];
}
- (void) threadFunction:(BeverageRecipe*)recipe
{
ClassContainingAsyncSocket* foo;
int i=3D0;
while (stuffTodo)
{
NSAutoreleasePool* autoReleasePool=3D[[NSAutoreleasePool alloc]init];
foo=3D[[ ClassContainingAsyncSocket alloc]init];
i=3D[foo readRegister:0]; //none of the AsyncSocket
delegate=
s
=91fire!=92
[autoReleasePool release];
do more stuff=85.
}
}
Does anyone have any idea what I am missing? Something fundamentally
wro=
ng?
Thanks in advance for any and all assistance.
Matt
_______________________________________________
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
_______________________________________________
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