Windows + ActivePerlでParallel::ForkManagerを動かすとおかしな挙動になるのですがこれは仕様でしょうか?


自分が作ったCPANモジュールがWindowsで動かなくて困っています。
http://search.cpan.org/~dqneo/Amazon-S3-FastUploader-0.05/lib/Amazon/S3/FastUploader.pm

具体的には、並列アップロードをしている最中に突然コンパイルエラーが出ます。
(例えば300個アップロードしていて、100個成功して101個目でエラーが出たりします。もう一度やると今度は別のファイルでエラーが出ます。300個全部成功するときもあります。)
■エラーメッセージの例
URI/_query.pm did not return a true value at C:/Perl/lib/URI/_generic.pm line 3.
Compilation failed in require at C:/Perl/lib/URI/_server.pm line 2.
Compilation failed in require at C:/Perl/lib/URI/http.pm line 3.
Compilation failed in require at (eval 25) line 2.

Perlのスレッドはバグっているという話を聞いたことがありますが、それが原因でしょうか?
非同期処理(あまり詳しくないのですが、AnyEventとか?)にすれば解決できるのでしょうか?

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/10/26 01:00:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:oil999 No.1

回答回数1728ベストアンサー獲得回数320

ポイント100pt

下記のモジュールを追加してみてください。

use threads;  
use threads::shared;  
id:DQNEO

おお!
やってみます!

2012/10/19 21:06:53
id:DQNEO

やってみました。
やはり途中でエラーが出ます。

501 Attempt to reload LWP/Protocol/http.pm aborted.
Compilation failed in require
: 501 Attempt to reload LWP/Protocol/http.pm aborted.
Compilation failed in require

2012/10/20 03:02:49

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません