Кажется, вы новичок в концепции параллелизма. Как уже упоминалось в комментариях, прежде чем двигаться вперед, вы должны понимать, как использовать общий ресурс между потоками. Но все же я объясню вам, как вы можете исправить свою текущую реализацию, но все же вы должны go ознакомиться с соответствующей документацией или руководством по использованию потоков. Пример:
//main program or thread
{
//initialize vector
//start secondary thread
//ask for a lock from os
//access or write on the vector
//ask for unlock from os
}
//secondary thread running infinitely and will exit when a desired condition meets
{
//ask for a lock from os
//access or write on the vector
//ask for unlock from os
}
До c ++ 11 ОС на базе Linux и ОС Windows имели разные реализации мьютекса. На многих устаревших системах они все еще используются. Как и в Linux ОС доступна pthread_mutex и аналогично для Windows она называется CriticalSection. Начиная с c ++ 11, эти концепции становятся частью стандарта и поэтому могут использоваться без учета зависимости от платформы, за исключением того, что компилятор должен иметь поддержку c ++ 11. Для более детального понимания того, как безопасно и правильно использовать механизм блокировки, я предлагаю вам поискать примеры в Интернете.
Спасибо. Счастливого программирования.