У меня есть код, как показано ниже. Моя проблема в том, что происходит сбой в случайной основе со следующей ошибкой:Perl Net :: SSH2 с отключением потока
perl: ath.c:193: _gcry_ath_mutex_lock: Assertion `*lock == ((ath_mutex_t) 0)' failed.
Как, если я бегу времени код 10 он падает в 2-3 раза. Как это исправить?
use warnings;
use strict;
use Net::SSH2;
use threads;
sub gsmExec {
$host = $_[0];
$port = $_[1];
$user = $_[2];
$pass = $_[3];
my $modem = Net::SSH2->new();
print "Trying to connect host $host : $port \n";
if($modem->connect($host,$port)) {
print "connected to host ..\n";
if ($modem->auth_password($user,$password) {
print "Authorized!!";
}
}
}
for(my $j = 1; $j <= $modemCount; $j++){
$thrList[$j] = threads->create(\&gsmExec,'host',22,'user','pass');
}
Возможно, это связано с некоторой ошибкой в Net :: SSH2 или в libssh2. Единственное решение - найти и исправить. – salva
hmm .. Я заменил нитки вилками, которые решили мою проблему. –
Если вы собираетесь запускать свой скрипт в окне Linux/Unix, вы можете использовать [Net :: OpenSSH] (https://metacpan.org/pod/Net::OpenSSH) [:: Parallel] (https : //metacpan.org/pod/Net :: OpenSSH :: Parallel) вместо этого! – salva