Я использую потоки для увеличения скорости моей программы.
В результате у меня теперь есть 8 bitset<UINT64_MAX>
битовых наборов.Я планирую создать 8 отдельных потоков, каждый из которых отвечает за установку и проверку своего набора битов, который определяется индексом, передаваемым каждому потоку.
Учитывая, что они обращаются к одному и тому же массиву битов и изменяют его, мне нужно использовать мьютексы?
Вот пример моего кода:
#define NUM_CORES 8
class MyBitsetClass {
public:
bitset<UINT64_MAX> bitsets[NUM_CORES];
thread threads[NUM_CORES];
void init() {
for (uint8_t i = 0; i < NUM_CORES; i++) {
threads[i] = thread(&MyBitsetClass::thread_handler, this, i);
}
... do other stuff
}
void thread_handler(uint8_t i){
// 2 threads are never passed the same i value so they are always
// modifying their 'own' bitset. do I need a mutex?
bitsets[i].set(some_index);
}
}