pascalabcnet/InstallerSamples/NETLibraries/System.Parallel/Parallel2.pas

46 lines
1.1 KiB
ObjectPascal
Raw Normal View History

2015-05-14 22:35:07 +03:00
uses
System, System.Net, System.Threading.Tasks;
type
Int = class
N: int64;
constructor(NN: int64);
begin
N := NN;
end;
function IsPrime: boolean;
begin
Result := True;
for var i: int64 := 2 to round(sqrt(N)) do
if N mod i = 0 then
begin
Result := False;
exit;
end;
end;
end;
type
BTask = Task<boolean>;
begin
var ss: array of int64 := (1265713689122381, 1265713689122461, 1265713689142451, 1265713689542501); // <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
var tb := new BTask[4];
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> tb[i] <20><><EFBFBD><EFBFBD> Result!
for var i := 0 to ss.Length - 1 do
tb[i] := Task.Factory.StartNew((new Int(ss[i])).IsPrime);
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> tb[i].Result <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for var i := 0 to tb.Length - 1 do
writeln(tb[i].Result);
// <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
writeln(Milliseconds);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
var t := Milliseconds;
for var i := 0 to ss.Length - 1 do
writeln((new Int(ss[i])).IsPrime);
writeln(Milliseconds - t);
end.