Hi guys, can anyone help me ?
#I try to put in queue my record use threads; use Thread::Queue; use Data::Dumper; my $queue = new Thread::Queue; $msg{'1'} = "Hello \n"; $msg{'2'}= "Word \n"; $queue->enqueue(\%msg); $r = $queue->dequeue_nb; print "r = $r\n"; print "1 : ".$r->{'1'}; print "2: ".$r->{'2'};
But I get error : Invalid value for shared scalar at c:\perl\lib\Queue.pm 90. When I remove use threads; code works OK. Any ideas how to put record in right way? But I need "use threads;" because without it my queue not sharing between threads. Following example illustrate what I mean
#test for sharing queue between threads use threads; use Thread::Queue; use Data::Dumper; use Thread; my $queue = new Thread::Queue; sub th1 { while(1) { $queue->enqueue("msg from th1"); print "th1: ADDED ".$queue->pending."\n"; sleep 2; } } sub th2 { while(1) { print "th2: REMOVED ".$queue->pending."\n"; $queue->dequeue_nb; sleep 2; } } $th1 = new Thread(\&th1); $th2 = new Thread(\&th2); $th1->join; $th2->join;
Code works OK. queue shared between threads. when I comment "use threads;" and run code, I can see that queue not shared between threads. Every thread have separated queue. How to solve it ? Thanks.

In reply to thread queue shared variable problem, URGENT. by denis.ua

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.