2012-04-08 54 views
0

我有一個std :: unordered_map作爲某種數據庫的實例。 (它基本上只是一個常規的散列表)。
我有4個線程從網絡(我使用C++ 11的std ::線程)和在每個這些線程的檢索長串,我記號化它們接收的字符串。標記化本身也使用新的Microsoft AMP庫進行並列化(所以標記化過程由GPU線程完成)。將數據並行添加到散列表中

我想每個4「主」線程的令牌作爲鍵添加到散列映射作爲GPU線程結束的標記化字符串(和然後重複上述過程)。

我怎麼會去同步所有的,這樣我可以安全地從每個線程添加新鍵到我的數據庫?

+0

在同一範圍'的std :: mutex'爲你的'的std :: unordered_map <>',並讓每個線程觸及哈希表之前鎖定互斥。老實說,雖然,如果你很在意的吞吐量,你可能是一個合適的併發容器,而不是手動同步一個更好。 – ildjarn 2012-04-08 17:52:43

+0

每個線程都有一個hashmap,然後在完成時將它們並行配對,可能會更高效。 – 2012-04-08 17:57:40

回答