RE: references - inject sub/params into longterm running thread
hi there basically...I have instantiated long term running thread/s. in the main thread, i want to pass a subroutine (code ref) and its parameters into a threads::shared variable, then execute it in a separate thread running in a while loop. I want to do this, because having a group of a couple instantiated long term running threads, before processing starts, would be less expensive, then instantiated many short term threads for each call...which would be expensive and affect performance due to the lag in thread creation. calls and subroutine's/parameters will vary, so injecting the code into a running thread is what i would like. I hope you all now can understand. Thanks in advance for your help. Regards, - Jeremy A. Quoting John Serink [EMAIL PROTECTED]: Why don't you pass the parameters as references. They work like pointers in C kindof. Why do you want to reference your subroutine? -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of [EMAIL PROTECTED] Sent: Tuesday, July 26, 2005 2:19 AM To: $Bill Luebkert Cc: perl-win32-users@listserv.ActiveState.com Subject: Re: references hello again, hello all, here is a ref/deref problem I need to take a socket handle, convert it to a socket ref, then a scaler string A bit later in the same script, I need to take that scaler string and turn it back to a socket ref, and deref it back to the socket handle. Maybe instead of asking for the way to implement your solution, you should describe the complete problem and see if we can come up with an alternate solution that is a little less convoluted. :) let me clarify my problem. I have a reference of a subroutine. eg. $sub = test; ..deref and execute $sub; ... sub test { my ($sockethandle,$blah...) = @_; ..do something } in order to pass the paramenters, i decided to do this : sub main { my $sub = test|$sockethandle; ($sub,@_) = split(/\|/,$sub); $sub; } if this is to work correctly, I need to take a socket handle, convert it to a socket ref, then a scaler, so i can pass it as a parameter. in order to use the socket later, i have to take the scaler, convert it to the socket ref, then dereference it. Is there an easier way to pass parameters with a subroutine reference? ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
RE: references - inject sub/params into longterm running thread
If you use shared arrays or hashes, Win32 perl will leak handles if you use threads. It will leak 2 handles per thread. If you're only starting say a couple of threads an hour, no problem. If you're starting hindreds, within a week or so, you'll run out of resource space for the process and it will crash. The leaking handles is a known bug when using threads on Win32. Cheers, John -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Sent: Tuesday, July 26, 2005 11:20 AM To: perl-win32-users@listserv.ActiveState.com Cc: John Serink Subject: RE: references - inject sub/params into longterm running thread hi there basically...I have instantiated long term running thread/s. in the main thread, i want to pass a subroutine (code ref) and its parameters into a threads::shared variable, then execute it in a separate thread running in a while loop. I want to do this, because having a group of a couple instantiated long term running threads, before processing starts, would be less expensive, then instantiated many short term threads for each call...which would be expensive and affect performance due to the lag in thread creation. calls and subroutine's/parameters will vary, so injecting the code into a running thread is what i would like. I hope you all now can understand. Thanks in advance for your help. Regards, - Jeremy A. Quoting John Serink [EMAIL PROTECTED]: Why don't you pass the parameters as references. They work like pointers in C kindof. Why do you want to reference your subroutine? -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of [EMAIL PROTECTED] Sent: Tuesday, July 26, 2005 2:19 AM To: $Bill Luebkert Cc: perl-win32-users@listserv.ActiveState.com Subject: Re: references hello again, hello all, here is a ref/deref problem I need to take a socket handle, convert it to a socket ref, then a scaler string A bit later in the same script, I need to take that scaler string and turn it back to a socket ref, and deref it back to the socket handle. Maybe instead of asking for the way to implement your solution, you should describe the complete problem and see if we can come up with an alternate solution that is a little less convoluted. :) let me clarify my problem. I have a reference of a subroutine. eg. $sub = test; ..deref and execute $sub; ... sub test { my ($sockethandle,$blah...) = @_; ..do something } in order to pass the paramenters, i decided to do this : sub main { my $sub = test|$sockethandle; ($sub,@_) = split(/\|/,$sub); $sub; } if this is to work correctly, I need to take a socket handle, convert it to a socket ref, then a scaler, so i can pass it as a parameter. in order to use the socket later, i have to take the scaler, convert it to the socket ref, then dereference it. Is there an easier way to pass parameters with a subroutine reference? ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
Re: references - inject sub/params into longterm running thread
[EMAIL PROTECTED] wrote: hi there basically...I have instantiated long term running thread/s. in the main thread, i want to pass a subroutine (code ref) and its parameters into a threads::shared variable, then execute it in a separate thread running in a while loop. I want to do this, because having a group of a couple instantiated long term running threads, before processing starts, would be less expensive, then instantiated many short term threads for each call...which would be expensive and affect performance due to the lag in thread creation. calls and subroutine's/parameters will vary, so injecting the code into a running thread is what i would like. I hope you all now can understand. Thanks in advance for your help. We're getting closer. Now create a proper test snippet that uses threads and we'll see if we can help where it fails. -- ,-/- __ _ _ $Bill LuebkertMailto:[EMAIL PROTECTED] (_/ / )// // DBE CollectiblesMailto:[EMAIL PROTECTED] / ) /-- o // // Castle of Medieval Myth Magic http://www.todbe.com/ -/-' /___/__/_/_http://dbecoll.tripod.com/ (My Perl/Lakers stuff) ___ Perl-Win32-Users mailing list Perl-Win32-Users@listserv.ActiveState.com To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs