In Anbetracht der folgenden:
Klasse C { void *print (void *) {cout
class C { void *print(void *) { coutvector
Klassen; pthread_t t1; classes.push_back (c ()); classes.push_back (c ()); vectorclasses; pthread_t t1; classes.push_back(C()); classes.push_back(C()); pthread_create (& t1, null, & c [0] .Print, null);
pthread_create(&t1, NULL, &c[0].print, NULL);. (Tree_Item ::*) (void*) ’bis 'void*(*) (void*)'Das Problem ergibt Pointer
pthread_create(&t1, NULL, &c[0].print, NULL);, um diese Hürde zu überwinden, haben Sie zwei Optionen:statische Klassenmethode
Eine statische Klassenmethode hat keinen "diesen" Parameter und kann direkt ohne eine Instanz der Klasse aufgerufen werden. So können Sie eine statische Klassenmethode für die Hallo -Funktion implementieren:
Klasse C { öffentlich: static void *Hallo (void *) {std :: cout dann können Sie einen Thread mit der statischen Klassenmethode erstellen:
pThread_create (& t, null, & c :: hello, null);
pthread_create(&t1, NULL, &c[0].print, NULL);Funktionszeiger[arepa. Dieser Funktionszeiger kann dann verwendet werden, um einen Thread zu erstellen.
pthread_create(&t, NULL, &C::hello, NULL);wobei Hello_helper definiert ist als:
void *hello_helper (void *context) {return ((c *) Kontext-> Hallo (); }
C c; pthread_create(&t, NULL, &C::hello_helper, &c);
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3