• 締切済み

threads を使ったマルチスレッドのエラー

threads のモジュールを使ってマルチスレッドのテストをすると下のようなエラーが 発生します。 何が原因なんでしょうか? Usage: threads->create(function, ...) at C:\testPerl\test9\test0006.pl line 11. use strict; use threads; use Data::Dumper; no strict "refs"; my $countM; for ($countM = 0; $countM < 5; $countM++){ my $test = "test".$countM; ${"thd".$countM}= threads->new(\&mtest($test)); ${"thd".$countM}->join; } print "test end.\n"; sub mtest { my $name = @_; print "$name"."\n"; threads->yield(); }

みんなの回答

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

2箇所誤りがあります。 #誤の行を#正に直してください。 以下のようになります。 ---------------------------------------- use strict; use threads; use Data::Dumper; no strict "refs"; my $countM; for ($countM = 0; $countM < 5; $countM++){ my $test = "test".$countM; #${"thd".$countM}= threads->new(\&mtest($test)); #誤 ${"thd".$countM}= threads->new(\&mtest,$test); #正 ${"thd".$countM}->join; } print "test end.\n"; sub mtest { #my $name = @_; #誤 my $name = shift(@_); #正 print "$name"."\n"; threads->yield(); } ----------------------------------------- 以下、実行結果 test0 test1 test2 test3 test4 test end.

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

threads->new(\&mtest($test)) って何をしたいんでしょうか? 確認だけど, threads::new の使い方は理解できてるよね?

参考URL:
http://perldoc.perl.org/threads.html

関連するQ&A