在我的代碼中,我將數據保存在二進制文件中,當我保存時,我在不同的線程中運行功能save()
。我保存的數據存儲在vector<uint_32>
中,這個向量也被其他函數使用,我做了一個副本以避免衝突和不希望的修改,我認爲這不是解決此問題的最有效方法我想問問哪種方法是最好的方式?也許,我在想共享指針。 這裏是代碼:這是訪問多線程應用程序中共享對象的最佳方式嗎?
inline void write(std::vector<uint32_t > pData) {
fThread = std::thread(&FileHandler::writeFile, this, pData);
fThread.join();
}
inline void writeFile(std::vector<uint32_t> cVectorCopy) {
fwrite((char*)&cVectorCopy[0] , cVectorCopy.size()*sizeof(uint32_t) , 1, fBinaryFile);
closeFile();
}
難道你不認爲互斥鎖或鎖定檢查比複製需要更多時間嗎?我的問題不是內存的使用,而是時間的使用。在這個鏡頭中,你認爲最好用像我這樣的副本來做嗎? – user3050386
@ user3050386如果mootexes不適合你,你可以用[COW](http://stackoverflow.com/questions/628938/what-is-copy-on-write)嘗試:D - 但總的來說,您需要進行配置以瞭解優化是否有效。它太依賴於數據的大小和訪問模式,從理論上回答。 – Quentin