Hallo eine Frage an die C++17 Experten:
Ich nutze die threadpool-Klasse von
https://github.com/fbastos1/thread_pool_cpp17/
die bisher sehr gut tut was sie soll.
Aber dort wurde ein Aufruf geändert, in der execute() - Funktion:
1 | - _fargs = std::make_tuple(std::forward<Args>(args)...)]() mutable {
|
2 | + _fargs = std::forward_as_tuple(std::forward<Args>(args)...)]()
|
Wenn ich das update, funktioniert mein Code nicht mehr:
Threadfunktion:
1 | static void renderFractalBand(uint ystart, uint yend, CMainWnd* wnd);
|
Aufruf:
1 | wnd->renderBand.push_back(wnd->fractalPool.execute(renderFractalBand, y, yend, wnd));
|
Das ist fractalPool und renderBand:
1 | thread_pool fractalPool;
|
2 | std::vector<std::future<void>> renderBand; // for threaded renderer
|
Der Compiler meint:
Error C2280: 'thread_pool::execute::<lambda_1>::<lambda_1>(const
thread_pool::execute::<lambda_1> &)': attempting to reference a deleted
function und viele weiter Zeilen...
Es scheint so, daß die Argumente des Futures kopiert werden müssen, was
ja mit einem Pointer gehen sollte.
Da ich mich mit std::future usw. noch nicht so gut auskenne, was könnte
ich machen damit es wieder geht?