リクエストが渡されたときにポート (単純なサーバー) でリッスンし、URL を解析してスレッドを開始します。
スレッドは共有されているキューに要素を挿入し、挿入中はロックされます。
キューでピークを呼び出すと、要素を取得できません。
use Thread qw(async);
use Thread::Queue;
my $DataQueue:shared = new Thread::Queue;
$newElement = init($user,$param,$reqest); # init is method in ElementStructure.pm
#after creating the element it is passes to subroutine where thread is started
sub updateData
{
my $iElement=shift;
$thr = async
{
{
lock($DQueue);
print "---->locked\n";
$DQueue->enqueue($iElement);
insertdata();
}
print "lock released\n";
};
}
sub insertdata
{
my $count=0;
while ($DataElement = $DQueue->peek($count) )
{
print "-- position $count\n";
$count++;
}
}