Предположим, у меня есть следующий код:
#include<concurrent_unordered_map.h>
struct firstStruct {
<irrelevant code>
}
struct secondStruct {
void func(){
<CRITICAL CODE>
}
}
Предположим, у меня есть это:
concurrent_unordered_map<firstStruct,secondStruct> cmap = ...
, и давайте предположим, что это cmap
заполнено, и что firstStruct f
и secondStruct s
- это (key,value)
пара (f,s)
, существующая в cmap
.
Если бы я использовал следующий фрагмент кода
cmap[f].func();
Было бы выполнение <CRITICAL CODE>
в func()
из secondStruct s
поточно-ориентированным?
Кроме того, что бы произошло, если бы у меня были следующие фрагменты кода, потенциально выполняемые одновременно в разных потоках?
cmap[f].func();
и
SecondStruct s2 = ... ;
cmap[f] = s2;
Если пара (key,value)
(f,s)
был изменен на (f,s2)
одним потоком, что произойдет, если другой поток выполнит <CRITICAL CODE>
?