Qtでマルチパートダウンローダーを書いています。QNetWorkRequest
ファイルのダウンロードには、httpヘッダーが「Range」の複数が使用されます。ここで、各part(QNetworkReply
)で受信したデータをfile.part1、file.part2などに書き込みます。
同じファイルに同時にデータを書き込むことは可能ですか?ロックを実装する必要がありますか?アプリケーションにデータを保存するための最良の方法はどれですか?
助言がありますか?
Qtでマルチパートダウンローダーを書いています。QNetWorkRequest
ファイルのダウンロードには、httpヘッダーが「Range」の複数が使用されます。ここで、各part(QNetworkReply
)で受信したデータをfile.part1、file.part2などに書き込みます。
同じファイルに同時にデータを書き込むことは可能ですか?ロックを実装する必要がありますか?アプリケーションにデータを保存するための最良の方法はどれですか?
助言がありますか?
終了したら、ファイルパーツをマージしてみませんか?パーツをQFile
簡単に書き込むことができます。QFile
おそらく、アプローチまたはデータに関する何かがこれを行うのを妨げていますが、可能であれば、それはおそらく、共有リソースとして扱う前に私が採用するアプローチです。
複数の同時応答に書き込みとアクセスを許可する場合はQFile
、はい、QFile
共有リソースになります。私の知る限り、あなたはそれをロックする必要があるでしょう。その時点で、いくつかのオプションがあります。応答を処理するスロットにを取得させようとすることができます。ミューテックスをロックしたい場合は、QSemaphore
を使用できます。そのルートに行きたい場合は、複数のプロデューサー(さまざまなQNetworkReplys)の単一のコンシューマー(ファイルに書き込んでいるものは何でも)の問題(ここにいくつかの便利なリンクを提供するStack Overflowの投稿)として扱うことができます。要するに、ここには多くのアプローチがありますが、そのルートに進むことができれば、最後にを単にマージするよりも、すべてが面倒だと思います。QMutex
QMutexLocker
file.part
同時に単一にマージするという点ではQFile
、Qtの方が簡単な方法があるかもしれませんが、私はそれを見つけたことがありません。そのような方法が存在する場合、おそらく他の誰かがチャイムを鳴らすことができます。
「アプリケーションにデータを保存するための最良の方法はどれですか?」とはどういう意味かわかりません。アプリケーション固有の設定を永続的に保存することを指しているのですか?もしそうなら、調べてQSettings
ください。QFile
ダウンロードしているデータの保存について言及している場合は、あなたが行っているように見えるように、おそらくそれをに書き込みます。あなたが何をダウンロードしているのかをもっと知らなければ、確実に知るのは難しいですが。