मैं एक पर्ल प्रोग्राम लेने और इसे थ्रेड करने की कोशिश कर रहा हूं। समस्या यह है कि मैंने पढ़ा है कि कुछ मॉड्यूल "थ्रेड सुरक्षित" नहीं हैं। मुझे कैसे पता चलेगा कि मॉड्यूल थ्रेड सुरक्षित है या नहीं? मैंने एक सूची के लिए चारों ओर देखा है और एक का पता नहीं लगा सकता है।पर्ल थ्रेड सुरक्षित मॉड्यूल
एक मॉड्यूल (पाठ :: CSV_XS) मैं अक्सर उपयोग का परीक्षण करने के लिए मैं निम्नलिखित कोड बाहर करने की कोशिश की:
Hello thread number: 1 Segmentation fault
इसका मतलब यह है:
use strict;
use warnings;
use threads;
use threads::shared;
require Text::CSV_XS;
my $CSV = Text::CSV_XS->new ({ binary => 1, eol => "\n" }) or die("Cannot use CSV: ".Text::CSV->error_diag());
open my $OUTPUT , ">:encoding(utf8)", "test.csv" or die("test.csv: $!");
share($CSV);
my $thr1 = threads->create(\&sayHello('1'));
my $thr2 = threads->create(\&sayHello('2'));
my $thr3 = threads->create(\&sayHello('3'));
sub sayHello
{
my($num) = @_;
print("Hello thread number: $num\n");
my @row = ($num);
lock($CSV);{
$CSV->print($OUTPUT, \@row);
$OUTPUT->autoflush(1);
}#lock
}#sayHello
उत्पादन मैं प्राप्त निम्नलिखित है मॉड्यूल थ्रेड सुरक्षित नहीं है, या यह एक और समस्या है?
धन्यवाद
छोटी से छोटी कार्यक्रम आप कर सकते हैं कि विभाजन गलती का कारण बनता है साथ आने के लिए प्रयास करें। – mob