マルチスレッドで同じファイルに書き込むためのクロスプラットフォームソリューションが必要(少なくともWindowsとMac OS X)異なるファイル領域に異なるスレッドを書き込む。クロスプラットフォーム環境下でQtのマルチスレッドで同じファイルの別の領域に書き込む方法は?
ファイルが少し大きいです。数GBでも数百MBでもかまいません。だからMMFは正しく適合しません。
QFileはクロスプラットフォームのオーバーラップです。 QFile文書を検索しましたが、共有書き込みオプションはありません。
Windowsでは、これはFILE_SHARE_WRITEオプションを使用してCreateFileによって実行できます。 Mac OS Xはどうですか?
Qtはこれをサポートしていますか、自分でカプセル化する必要がありますか? Mac OS Xでこれを行うには?
同期書き込みよりも並列書き込みの利点はありますが、これはほとんどCPUに拘束されない問題であり、一部の(低い)レベルでは書き込みを同期させる必要があるからです。 –
パフォーマンスを考慮して、ノンブロッキングIOを使用して、ロックを考えずにすべてのスレッドに単一のファイルに書き込むように依頼します。ボトルネックCPU/IOをチェックします。 – Nickolas
@Frank Osterfeld [link](http://social.msdn.microsoft.com/Forums/en/parallelcppnative/thread/042c3ef8-742d-4eda-9c74-018516d86b8c)は、いくつかの調査をした後、私に多くのことを明確にしています。あなたが言うように、ボトルネックはIOであり、同時書き込みは助けにならない。 – Nickolas