注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Bioinformatics home

 
 
 

日志

 
 

perl多线程2  

2009-12-22 23:16:12|  分类: Perl |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

感谢 Jerry D. Hedden 给予帮助

#!/usr/bin/perl -w
 use threads;
 use threads::shared;
 $| = 1;
 my $MAX_THREAD_NUMBER =3;
 my $thread_number: shared = 0;
 my @array=(1540,1574,1789,2073,2297,2300,2332);
 foreach my $str(@array)
 {
     print " $str is being done \n";
     &create_thread($str);
 }

# Wait for all threas to finish
$_->join() foreach threads->list();
print("Done\n");
 
 #task management fucntion
 sub create_thread
 {
        my $miRNAid=shift;
        while (1)
        {
               {
                   lock($thread_number);
                      if ( $thread_number < $MAX_THREAD_NUMBER)
                      {
                         $thread_number++;
       # Do not detach the threads - otherwise you can monitor them.
                         #threads-create(\&waterBlast, $miRNAid)->detach();
                         threads-create(\&waterBlast, $miRNAid);
                         return;
                      }
               }
               sleep(1);
        }
 }


sub waterBlast
{
  my $miRNAid=shift;
  print "child  $miRNAid is done \n";
  {
   lock($thread_number);
   $thread_number--;
  }
}

 

 

  评论这张
 
阅读(1258)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017