我写了一个 torrent 下载演示,如下所示:
var peers....
for(var i =0;i < length;i++){
var peer = peers[i];
peer.start((List<int> data){
_downloadFile.write(begin,end,data);
});
}
Run Code Online (Sandbox Code Playgroud)
我的意思是有多次peer尝试访问_file.
`_downloadFile` code looks like this:
....
var _access = _file.open(mode:FileMode.writeOnlyAppend);
...
Future write(int begin,int end, List<int> block) async{
....
await _access.setPosition(begin);
await _access.writeFrom(block);
....
}
Run Code Online (Sandbox Code Playgroud)
它会抛出异常:FileSystemException: An async operation is currently pending
我认为原因是不同的分叉调用setPosition,所以我尝试让每个分叉等待写入操作结束:
`_downloadFile` code look like this:
....
var _access = _file.open(mode:FileMode.writeOnlyAppend);
var _lock;
...
Future write(int begin,int end, List<int> block) async{ …Run Code Online (Sandbox Code Playgroud) 我按照js代码写了一些dart代码,有问题,希望有人能帮助我/
js代码:
var max = 0x80000000;
var data = -2000;
var mod = data % max;
Run Code Online (Sandbox Code Playgroud)
mod 值为 -2000
飞镖代码:
var max = 0x80000000;
var data = -2000;
var mod = data % max;
Run Code Online (Sandbox Code Playgroud)
mod 值为 2147481648
为什么?