Untitled
unknown
plain_text
a year ago
1.3 kB
6
Indexable
#include <iostream>
#include <vector>
#include <thread>
#include <future>
#include <chrono>
// Funkcja wykonywana przez każdy wątek
void threadFunction(int id, std::promise<int> resultPromise) {
std::this_thread::sleep_for(std::chrono::milliseconds(100 * id)); // Symulacja pracy
int result = id * 10; // Przykładowy wynik obliczeń
resultPromise.set_value(result); // Ustawienie wyniku
}
int main() {
const int n = 5; // Liczba wątków
// Wektory przechowujące obiekty promise, future oraz wątki
std::vector<std::promise<int>> promises(n);
std::vector<std::future<int>> futures;
std::vector<std::thread> threads;
// Tworzenie wątków
for (int i = 0; i < n; ++i) {
futures.push_back(promises[i].get_future()); // Pobranie future z promise
threads.emplace_back(threadFunction, i, std::move(promises[i])); // Uruchomienie wątku
}
// Oczekiwanie na zakończenie wątków
for (auto& t : threads) {
if (t.joinable()) {
t.join();
}
}
// Pobieranie wyników z wątków
for (int i = 0; i < n; ++i) {
int result = futures[i].get(); // Pobranie wyniku
std::cout << "Result from thread " << i << ": " << result << '\n';
}
return 0;
}
Editor is loading...
Leave a Comment