Namensräume
Varianten
Aktionen

std::packaged_task<R(Args...)>::reset

Von cppreference.com
 
 
Bibliothek für nebenläufige Programmierung
Threads
(C++11)
(C++20)
this_thread Namespace
(C++11)
(C++11)
(C++11)
Kooperatives Beenden
Gegenseitiger Ausschluss
(C++11)
Allgemeines Sperrungsmanagement
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Bedingungsvariablen
(C++11)
Semaphoren
Latches und Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
(C++11)
Sichere Wiederherstellung
(C++26)
Hazard Pointer
Atomare Typen
(C++11)
(C++20)
Initialisierung von atomaren Typen
(C++11)(veraltet in C++20)
(C++11)(veraltet in C++20)
Speicherordnung
(C++11)(deprecated in C++26)
Freie Funktionen für atomare Operationen
Freie Funktionen für atomare Flags
 
 
void reset();
(seit C++11)

Setzt den Zustand zurück und verwirft die Ergebnisse früherer Ausführungen. Ein neuer geteilter Zustand wird konstruiert.

Äquivalent zu *this = packaged_task(std::move(f)), wobei f die gespeicherte Aufgabe ist.

Inhalt

[bearbeiten] Parameter

(keine)

[bearbeiten] Rückgabewert

(keine)

[bearbeiten] Ausnahmen

  • std::future_error wenn *this keinen geteilten Zustand hat. Die Fehlerbedingung wird auf no_state gesetzt.
  • std::bad_alloc wenn nicht genügend Speicher für einen neuen geteilten Zustand vorhanden war.
  • Jede Ausnahme, die vom Move-Konstruktor der neuen packaged_task geworfen wird.

[bearbeiten] Beispiel

#include <cmath>
#include <future>
#include <iostream>
#include <thread>
 
int main()
{
    std::packaged_task<int(int,int)> task([](int a, int b)
    {
        return std::pow(a, b);
    });
    std::future<int> result = task.get_future();
    task(2, 9);
    std::cout << "2^9 = " << result.get() << '\n';
 
    task.reset();
    result = task.get_future();
    std::thread task_td(std::move(task), 2, 10);
    task_td.join();
    std::cout << "2^10 = " << result.get() << '\n';
}

Ausgabe

2^9 = 512
2^10 = 1024