Как передать в поток указатель на переменную с++

154
26 июня 2019, 11:00

есть функция

void t(int aa) 
{
    for(int i=0;i<100;i++){            
       if(aa==0){
           std::cout<<"Поток номер = "<<std::this_thread::get_id()
                    <<"   Отработал итерацию - "<<i<<std::endl;
           sleep(1);
        }
        else{
            aa--;
            std::cout<<"поток "<<std::this_thread::get_id()
                      <<"   уснул - "<<std::endl;
            sleep(5);
        }
    }
} 

суть этой функции в том что потоки спокойно делают свои итерации (допустим потоков штук 10) но в один момент функция t() которую выполняют потоки,видит переменную аа которая лежит в главном потоке функции main() . И допустим аа = 2 Это значит что 2 потока должны заснуть,любые из 10. те кто первые увидят аа делают ее аа--; и засыпают на 5 секунд .

Вопрос вот в чем , как сделать переменную аа видимой для всех потоков и изменяемой для всех потоков?

Answer 1

Просто передавайте аа по ссылке или указателю, а при использовании захватывайте мьютекс

READ ALSO
Ошибка при обращении к API Яндекс.Директ

Ошибка при обращении к API Яндекс.Директ

Пытаюсь написать программу, которая отправляет POST запрос на ЯндексДирект

149
Кастомзация карты Google Maps в приложении

Кастомзация карты Google Maps в приложении

Как на карте Google Maps выделять область и создавать свои маркеры по аналогии с рисунком? Есть ли где-то документация по поводу этого

128
Аналоги Netty для c++

Аналоги Netty для c++

Некоторое время использовал фреймворк Netty для создания асинхронного неблокирующего сервераСейчас подумываю перекатываться на c++, есть ли аналоги...

141