Thanks guys.

I like the look of Chris's queue idea, so I tried it ... but still no
joy. Here's the test code. did I screw up ... ?

i'll post this over at perl monks too as I saw some related discussion there.

regards

Daniel
==========

use strict;
use warnings;

use threads;
use Thread::Queue;
use IO::Socket qw(:DEFAULT :crlf);
use Time::HiRes qw( usleep );

my $sock = new IO::Socket::INET (LocalAddr => "localhost",
                                 LocalPort => 1000,
                                 Proto => 'tcp',
                                 Listen => 1,
                                 Reuse => 1);
my $SOCK;
my $rq;

sub sockout{
    my $r = shift;
    print $SOCK "$r\r\n";
}

sub chatter{
    while (1){
        usleep(1000 * 1000);
        sockout "talkin to myself ...";
    }
}

sub reply_thread{
    while (1){
        while ($rq->pending){
            print "rt pr\n";
            print $SOCK $rq->dequeue;
        };
        usleep(1000 * 100);
    }
}

$SOCK = $sock->accept();

$rq = new Thread::Queue;
my $reply_thread = threads->create(\&reply_thread);
my $chatter_thread = threads->create(\&chatter);

sockout("CONNECTED!");
while (my $line = <$SOCK>){
    sockout("You said ".$line);
}


On 10/27/06, Chris Wagner <[EMAIL PROTECTED]> wrote:
> At 11:59 AM 10/27/2006 +0200, Daniel McBrearty wrote:
> >Now I want to run a thread inside this app that sends back info
> >regularly. It needs to run in a seperate thread, and be startable and
> >stoppable, which I have working. I don't care if the responses from
> >the main thread and the reporter thread lines are mixed up ... ie
>
> One simple thing u can do is to have a dedicated thread handle the sockets
> and have the other threads communicate with it via a message queue.  This
> way u never have to worry about thread collisions on the socket.  Any old
> thread that wants to talk just writes into that queue and the socket thread
> checks it on a regular basis to see if anything needs to be sent.  U can
> even have it write back to the calling thread any return/status information
> about the socket send.
>
>
> --
> REMEMBER THE WORLD TRADE CENTER         ---=< WTC 911 >=--
> "...ne cede malis"
>
> 00000100
>
> _______________________________________________
> Perl-Win32-Users mailing list
> Perl-Win32-Users@listserv.ActiveState.com
> To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
>


-- 
Daniel McBrearty
email : danielmcbrearty at gmail.com
www.engoi.com : the multi - language vocab trainer
BTW : 0873928131
_______________________________________________
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to