Мониторинг общей переменной с доступом для чтения и записи несколькими потоками в C ++ - PullRequest
1 голос
/ 16 июня 2020

Я ищу лучшую реализацию сегмента кода ниже, чтобы минимизировать использование ЦП. У меня есть переменная, которая имеет доступ для чтения / записи для нескольких потоков и должна контролироваться, как показано ниже.

while(true){
     mutex.lock();
     int flag = external_flag;
     mutex.unlock();
     if(flag == 3){
          break;
     }else if (flag == 4){   
          go to label;
     }
}

1 Ответ

5 голосов
/ 16 июня 2020

Используйте переменную atomi c, так как это будет быстрее, чем полномасштабный мьютекс, а также, вероятно, без блокировки. Например, std::atomic<int> или std::atomic_flag в зависимости от того, что вы делаете.

Однако, в зависимости от того, что именно вы делаете в своем коде, вы можете захотеть использовать условную переменную, такую ​​как std::condition_variable, чтобы избежать прядение.

...