ファイルを非同期的にロードし、結果としてファイルのコンテンツを含むタスクを返すメソッドを実装したいとします。.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)
{
???
}