假设我想实现一个异步加载文件并以文件内容作为结果返回某个任务的方法。在 .NET 中,我可以说:
public async Task<byte[]> GetFileContentsAsync(string path)
{
using (var fs = File.OpenRead(path))
using (var ms = new MemoryStream())
{
await fs.CopyToAsync(ms);
return ms.ToArray();
}
}
在幕后,CopyToAsync
将利用 IO 完成端口来确保一个线程不会被浪费在空闲、等待 IO 上。
Objective-C(++)中是否有等价物?我可以有效地执行以下合同吗?
ppl::task<StorageBufferPtr> GetFileContentsAsync(const shared_ptr<string> path)
{
???
}