【发布时间】:2014-03-16 10:01:42
【问题描述】:
我有一个程序,它逐行读取文件,对该行进行哈希处理并将其存储在 boost 无序哈希映射中(如下所示)。但是,我已经意识到这段代码是我程序中的一个瓶颈,因为文件可能会变得非常庞大。
typedef boost::unordered_map<std::string,std::string> MAP;
MAP hash_table;
FILE *stream = fopen(filename, "r");
char *line;
while(fscanf(stream, " %m[^\n]", &line) == 1)
{
hash_table[line].push_back(line);
}
我计划创建多个线程,每个线程负责读取和散列文件的一部分。我读过 boost 无序映射是线程不安全的。如何在下面的代码中合并互斥锁。我能否只锁定当前正在修改的存储桶而不是整个哈希映射?
【问题讨论】:
标签: multithreading boost mutex