#include<iostream>
#include<thread>
using namespace std;
class arrayModifier {
public:
void operator()(int a[], int len) {
for (int i = 0; i < len; i++) {
a[i] *= 2;
}
}
void invers(int a[], int len) {
for (int i = 0; i < len; i++) {
a[i] *= -1;
}
}
};
int main() {
const int length = 5;
int arr[length] = {1, 2, 3, 4, 5};
arrayModifier obj;
cout << "Output the array before threads\n";
for (int i = 0; i < length; i++) {
cout << arr[i] << ' ';
}
// Инициализируется объект функцией
thread arr_thread(obj, arr, length);
// Инициализируется обычным открытым методом
thread arr_thread2(&arrayModifier::invers, &obj, arr, length);
if (arr_thread.joinable()) arr_thread.join();
if (arr_thread2.joinable()) arr_thread2.join();
cout << "\nOutput th array after threads\n";
for (int i = 0; i < length; i++) {
cout << arr[i] << ' ';
}
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+IAojaW5jbHVkZTx0aHJlYWQ+IAp1c2luZyBuYW1lc3BhY2Ugc3RkOyAKIApjbGFzcyBhcnJheU1vZGlmaWVyIHsgCnB1YmxpYzogCiAKICAgIHZvaWQgb3BlcmF0b3IoKShpbnQgYVtdLCBpbnQgbGVuKSB7IAogICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKyspIHsgCiAgICAgICAgICAgIGFbaV0gKj0gMjsgCiAgICAgICAgfSAKICAgIH0gCiAKICAgIHZvaWQgaW52ZXJzKGludCBhW10sIGludCBsZW4pIHsgCiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykgeyAKICAgICAgICAgICAgYVtpXSAqPSAtMTsgCiAgICAgICAgfSAKICAgIH0gCn07IAogCmludCBtYWluKCkgeyAKICAgIGNvbnN0IGludCBsZW5ndGggPSA1OyAKICAgIGludCBhcnJbbGVuZ3RoXSA9IHsxLCAyLCAzLCA0LCA1fTsgCiAgICBhcnJheU1vZGlmaWVyIG9iajsgCiAgICBjb3V0IDw8ICJPdXRwdXQgdGhlIGFycmF5IGJlZm9yZSB0aHJlYWRzXG4iOyAKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsgCiAgICAgICAgY291dCA8PCBhcnJbaV0gPDwgJyAnOyAKICAgIH0gCiAgICAvLyDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGC0YHRjyDQvtCx0YrQtdC60YIg0YTRg9C90LrRhtC40LXQuSAKICAgIHRocmVhZCBhcnJfdGhyZWFkKG9iaiwgYXJyLCBsZW5ndGgpOyAKICAgIC8vINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YLRgdGPINC+0LHRi9GH0L3Ri9C8INC+0YLQutGA0YvRgtGL0Lwg0LzQtdGC0L7QtNC+0LwgCiAgICB0aHJlYWQgYXJyX3RocmVhZDIoJmFycmF5TW9kaWZpZXI6OmludmVycywgJm9iaiwgYXJyLCBsZW5ndGgpOyAKICAgIGlmIChhcnJfdGhyZWFkLmpvaW5hYmxlKCkpIGFycl90aHJlYWQuam9pbigpOyAKICAgIGlmIChhcnJfdGhyZWFkMi5qb2luYWJsZSgpKSBhcnJfdGhyZWFkMi5qb2luKCk7IAogICAgY291dCA8PCAiXG5PdXRwdXQgdGggYXJyYXkgYWZ0ZXIgdGhyZWFkc1xuIjsgCiAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7IAogICAgICAgIGNvdXQgPDwgYXJyW2ldIDw8ICcgJzsgCiAgICB9IAogICAgcmV0dXJuIDA7IAp9