So what do you suggest I do to prevent the script from ending after the main thread spawns the threads ? sleep while ($running); ?
That is the simplest option.
Better would be to not detach your threads and use join:
my @threads; for (1..$listeners) { push @threads, threads->create(\&handleConnection, $main_sock) +; } $_->join for @threads;
But for that to work, you need to ensure that all your threads will terminate at the appropriate time. That means making your $running variable shared, and then ensuring that it will be checked and acted upon within your select loop. And for that to work, you need to ensure that it will be check regularly, and not only when the select returns some IO activity, and that means using a timeout on the select. In turn, that will probably require making your sockets non-blocking.
In reply to Re^7: Trying to thread a daemon with threads and Thread::Queue
by BrowserUk
in thread Trying to thread a daemon with threads and Thread::Queue
by jasmineaura
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |