Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Użycie metody std::threads z wywoływaniem wieloargumentowej przeładowanej funkcji.

Ostatnio zmodyfikowano 2022-05-30 20:24
Autor Wiadomość
Masterofironfist
Temat założony przez niniejszego użytkownika
Użycie metody std::threads z wywoływaniem wieloargumentowej przeładowanej funkcji.
» 2022-05-30 19:57:23
C/C++
#include <thread>
using namespace std;

void logic( MAP & M1, Player & P1, Fruit & F1, GAME & G1, Input & I1, SpecialFruit & SF1 );

void logic( MAP & M1, Player & P1, Fruit & F1, GAME & G1, Input & I1, SpecialFruit & SF1, Object & Obj1 ); //Przeładowana wersja tej funkcji do innego poziomu tej gry;

int main()
{
   
//objects declarations and definitions here;
   
while( !gameover )
   
{
       
thread logicThread( logic, M1, P1, F1, G1, I1, SF1 ); //Ta część zwraca następujący błąd: żadne wystąpienie konstruktora nie jest zgodne z listą argumentów;
       
logic( M1, P1, F1, G1, I1, SF1 ); //niemniej coś takiego działa bez problemu;
        //tutaj reszta kodu
       
logicThread.join();
   
}
}

void logic( MAP & M1, Player & P1, Fruit & F1, GAME & G1, Input & I1, SpecialFruit & SF1 )
{
   
//tutaj ciało funkcji;
}
Dzień dobry.
Mam mały problem z metodą std::thread otóż potrzebuje wykonac funkcje logic jako osobny wątek programu żeby program chodził wydajniej ale otrzymuje błąd opisany w komentarzu. A co do referencji to niestety jest ona potrzebna bo te obiekty maja po kilka zmiennych składowych minimum a niektóre nawet zmienne składowe typu string więc jest ona niezbędna w tym wypadku. Próbowałem też zapisać każdy z argumentów w tej postaci ref(arg),ref(arg2),... ale i to nie pomogło.
P-179467
pekfos
» 2022-05-30 20:15:16
Najprościej będzie opakować wywołanie w lambdę:
C/C++
thread logicThread([ & M1, & P1, & F1, & G1, & I1, & SF1 ] { logic( M1, P1, F1, G1, I1, SF1 ); } );
P-179468
Masterofironfist
Temat założony przez niniejszego użytkownika
» 2022-05-30 20:24:28
Dziękuje za pomoc, ponieważ ta funkcja zajmuje się całą w zasadzie możliwą logiką na danym poziomie, przez co w tej funkcji jest troche obliczeń pozycji a nawet list współrzędnych zapisanych w wektorach i stąd funkcje musze zrobic w osobnym nym wątku. Do tej pory ona była w normalnej formie ale ponieważ ten mini projekt zbliża się ku końcowi muszę go zooptymalizować.
P-179469
« 1 »
  Strona 1 z 1