Modernes C++ programmieren

Okt 23, 2024

lst-1044-godb.cpp

//#(compile) c++; compiler:g132; options:-O3 -std=c++23; libs:-
// https://godbolt.org/z/9s94nbrx3 
#include <future>
#include <thread>
#include <iostream>
int ack(int m, int n); // Ackermannfunktion
int main () {
    std::packaged_task<int(void)> task1 {          // Signatur der Restfunktion
    []{ return ack(3,11);}  };                     // ack(3,11) vorbereiten
  auto f1 = task1.get_future();                    // Kommunikationskanal
  std::jthread th1 { move(task1) };                // in neuen Thread
  std::cout << "  ack(3,11):" << f1.get()          // Ergebnis abholen
      << '\n';                                     // Ausgabe: ack(3,11):16381
}