Ecco lo scenario:C++ unordered_map STL, la sicurezza thread in cui ogni thread ha accesso solo ad essa la propria tasto assegnato e può modificare tale valore
1) utilizzando un unordered_map<int, vector<MyClass*>*>
diciamo aggiungo i tasti 1, 2, ... 8
2) tutti i tasti sono impostati con un vettore all'inizializzazione del programma e nulla viene aggiunto o eliminato
3) Ho 8 thread, dove thread1 accede a chiave [1], thread2 accede a chiave [2], ... thread8 accesses key [8] (ovvero il numero di thread può accedere solo a quel numero di chiave e nessun'altra chiave)
A volte riassegno il valore vecto r * in un'altra raccolta allocata di heap. (cioè thread1 esegue key[1] = new vector<MyClass*>
)
Credo che questo sia sicuro, sono corretto? In caso contrario, suppongo che userò concurrent_unordered_map.
grazie.
Ho appena scoperto che '[contenitore.requirements.dataraces]/1' consente che questo venga fatto in un modo molto più bello di quello che avevo suggerito nella mia risposta originale. Per favore dai un'occhiata. – Mankarse