次のコードで行ったような約束事の間で配列を共有することは安全ですか?スレッド間で配列を共有するのは安全ですか?
#!/usr/bin/env perl6
use v6;
sub my_sub ($string, $len) {
my ($s, $l);
if $string.chars > $len {
$s = $string.substr(0, $len);
$l = $len;
}
else {
$s = $string;
$l = $s.chars;
}
return $s, $l;
}
my @orig = <length substring character subroutine control elements now promise>;
my $len = 7;
my @copy;
my @length;
my $cores = 4;
my $p = @orig.elems div $cores;
my @vb = (0..^$cores).map: { [ $p * $_, $p * ($_ + 1) ] };
@vb[@vb.end][1] = @orig.elems;
my @promise;
for @vb -> $r {
@promise.push: start {
for $r[0]..^$r[1] -> $i {
(@copy[$i], @length[$i]) = my_sub(@orig[$i], $len);
}
};
}
await @promise;
約束のポイントは、何かを返すという約束で、意図的に 'start'ステートメントプレフィックスから有用なものを返すわけではありません。 –
しかし、 'start'は何かを返すだけです。私は並行処理の部分に興味がありますので、CPUのすべてのコアが動作するように並列にコードを実行してください。 –
私が言っていることは、レンチを拾い、それを爪の中に入れて使うことに似ています。どの作品、...私は推測する。 –