﻿<?xml version='1.0' encoding='UTF-8'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/"><channel><title>Релиб / Веб-программирование / Perl  / thread queue shared variable problem, URGENT. / Latest Posts</title><generator>InstantForum.NET v4.1.4</generator><description>Релиб</description><link>http://www.relib.com/forums/</link><webMaster>robot@relib.com</webMaster><lastBuildDate>Wed, 20 Aug 2008 13:03:23 GMT</lastBuildDate><ttl>20</ttl><item><title>RE: thread queue shared variable problem, URGENT.</title><link>http://www.relib.com/forums/Topic876219-18-1.aspx</link><description>Thx for answer!Solved by using Thread::Queue:Any, which accept any stuructures ...</description><pubDate>Sat, 23 Jul 2005 03:14:00 GMT</pubDate><dc:creator>DenisKa.ua</dc:creator></item><item><title>RE: thread queue shared variable problem, URGENT.</title><link>http://www.relib.com/forums/Topic876219-18-1.aspx</link><description>Tread::Queue не передает ссылок, только обычные типы(скаляры, списки, хэши).  Вот это работает:[code]use threads;use Thread::Queue;#use Data::Dumper;my $queue = new Thread::Queue;$msg{'1'} = &amp;quot;Hello &lt;br&gt;&amp;quot;;$msg{'2'}= &amp;quot;Word &lt;br&gt;&amp;quot;;$queue-&amp;gt;enqueue(%msg);my @gotit;while ($queue-&amp;gt;pending) {     push @gotit, $queue-&amp;gt;dequeue_nb;}my %gotit = @gotit;print &amp;quot;gotit = @gotit&lt;br&gt;&amp;quot;;print &amp;quot;1 : &amp;quot;.$gotit{'1'}; print &amp;quot;2: &amp;quot;.$gotit{'2'};[/code]</description><pubDate>Fri, 22 Jul 2005 18:23:00 GMT</pubDate><dc:creator>umbra</dc:creator></item><item><title>thread queue shared variable problem, URGENT.</title><link>http://www.relib.com/forums/Topic876219-18-1.aspx</link><description>Hi guys, can anyone help me ?#I try to put in queue my recorduse threads;use Thread::Queue;use Data::Dumper;my $queue = new Thread::Queue;  $msg{'1'} = &amp;quot;Hello &lt;br&gt;&amp;quot;;  $msg{'2'}=  &amp;quot;Word &lt;br&gt;&amp;quot;;  $queue-&amp;gt;enqueue(\%msg);    $r = $queue-&amp;gt;dequeue_nb;   print &amp;quot;r = $r&lt;br&gt;&amp;quot;;   print &amp;quot;1 : &amp;quot;.$r-&amp;gt;{'1'};    print &amp;quot;2: &amp;quot;.$r-&amp;gt;{'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 &amp;quot;use threads;&amp;quot;  because  without it my queue not sharingbetween threads.Following example illustrate what I mean#test for sharing queue between threadsuse threads;use Thread::Queue;use Data::Dumper;use Thread;my $queue = new Thread::Queue;sub th1 {while(1) {  $queue-&amp;gt;enqueue(&amp;quot;msg from th1&amp;quot;);   print &amp;quot;th1: ADDED &amp;quot;.$queue-&amp;gt;pending.&amp;quot;&lt;br&gt;&amp;quot;;  sleep 2; }}sub th2 {while(1) {  print &amp;quot;th2: REMOVED &amp;quot;.$queue-&amp;gt;pending.&amp;quot;&lt;br&gt;&amp;quot;;  $queue-&amp;gt;dequeue_nb;  sleep 2;}}$th1 = new Thread(\&amp;amp;th1);$th2 = new Thread(\&amp;amp;th2); $th1-&amp;gt;join;$th2-&amp;gt;join;Code works OK. queue shared between threads.when I comment &amp;quot;use threads;&amp;quot; and run code, I can see that queue notshared between threads. Every thread have separated queue.How to solve it ?Thanks.</description><pubDate>Thu, 21 Jul 2005 15:32:00 GMT</pubDate><dc:creator>DenisKa.ua</dc:creator></item></channel></rss>