我有一个生成散列密码的应用程序,生成它需要时间。我认为为了提高性能,我会让散列密码生成器在单独的核心中工作。我的计算机支持 3 个核心处理器,我认为使用 dart:isolate 计算其他处理器核心中的哈希密码是个好主意。
我试过以下:
import 'dart:isolate';
import 'package:dbcrypt/dbcrypt.dart';
main() {
ReceivePort receivePort = new ReceivePort();
var receivePortPw = new ReceivePort();
receivePortPw.listen((msg) {
print(msg);
});
Isolate.spawn(ReturnHashedPassword, receivePortPw.sendPort);
print('Print1 -> ' + new DBCrypt().hashpw('Password', new DBCrypt().gensalt()));
print('Print2 -> ' + new DBCrypt().hashpw('Password', new DBCrypt().gensalt()));
}
void ReturnHashedPassword(SendPort sendPort)
{
ReceivePort receivePort = new ReceivePort();
sendPort.send('Isolate -> ' + new DBCrypt().hashpw('Password', new DBCrypt().gensalt()));
}
作为我得到的输出
Print1 -> $2a$10$XggGPuIyLP2GLon2eKtW2.kG5QwK4fkiIDFa8hkgDPdy1h1AAC6LO
Print2 -> $2a$10$zK..L6Hi0NkeRbkm2/v6H.5s25QQSjwRszI83.i3CzFZlb7pFCW6G
Isolate -> $2a$10$DM/.25em/3amvGNu2G6Wl.SQQ2ECGSE6DUwPc56tvdoMGw9ZBja36
似乎是,它不能并发工作。我预计,隔离将是第一名或第二名,而不是最后一名。我在这里做错了什么?