Вопрос о собеседовании
int count = 0;
void func1()
{
for ( int i =0 ; i < 10; ++i )
count = count + 1;
}
void func2()
{
for ( int i =0 ; i < 10; ++i )
count++;
}
void func3()
{
for ( int i =0 ; i < 10; ++i )
++count;
}
int main()
{
thread(func1);
thread(func2);
thread(func3);
//joining all the threads
return 0;
}
Возникает вопрос: какой теоретический эффект может иметь диапазон значений count
? Верхняя граница, по-видимому, равна 30, но какая нижняя? Они сказали мне это 10
, но я не уверен в этом. В противном случае, зачем нам нужны барьеры памяти?
Итак, какова нижняя граница диапазона?