在我的代码中,我将数据保存在二进制文件中,当我保存时,我在不同的线程中运行功能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