Threads

Status
Niet open voor verdere reacties.

quadran

Gebruiker
Lid geworden
26 jul 2006
Berichten
162
Hallo,

Ik heb een FTP programma maar die Indy componenten blokkeren mijn programma zolang ze actief zijn. Daarom zou ik die opdrachten graag in een Thread plaatsen.

Iemand een eenvoudig voorbeeldje over Threads dat ik kan gebruiken of step per step kan volgen?

Mvg
:thumb:
 
Hallo,

Ik heb een FTP programma maar die Indy componenten blokkeren mijn programma zolang ze actief zijn. Daarom zou ik die opdrachten graag in een Thread plaatsen.

Iemand een eenvoudig voorbeeldje over Threads dat ik kan gebruiken of step per step kan volgen?

Mvg
:thumb:

welke threads wil je gebruiken? Er zijn er heel wat, ken ze nu niet allemaal...
 
Ik ken ze ook niet, daarmee vraag ik het :o

Ik zou willen dat als mijn TidFTP->Put gestart is en bezig dat mijn programma verder kan werken.

Niet meer, niet minder :thumb:
 
Ik ken ze ook niet, daarmee vraag ik het :o

Ik zou willen dat als mijn TidFTP->Put gestart is en bezig dat mijn programma verder kan werken.

Niet meer, niet minder :thumb:

iets dergelijks dus. Ik kan het wel niet testen. Zit momenteel onder windows en ik de posix lib/dll's niet. Wel oppassen je kan geen class member functies aanroepen als thread functie(met een omweg kan je wel iets simuleren). Je moet hiervoor een gewone c-functie gebruiken met de volgende syntax:

void* functieNaam(void* args)


PHP:
#include "pthread.h"
#include <stdio.h>

void* threadFunction(void* args);

class Test {
public:
	Test(int m):m_m(m) {;}
	int m_m;
};

int main(void) {
	Test* t = new Test(3);

	pthread_t thread;

    // thread starten:
    // 1ste parameter thread id
    // 2de parameter initialisatie argumenten NULL = default
    // 3de parameter de functie die in de thread zal lopen.
    // 4de parameter de argumenten voor de functie (kan ook gewoon NULL zijn als er geen argumenten moeten meegegeven worden
	pthread_create(&thread, NULL, threadFunction, (void*) t);

	Test* a;
    // Dit zal ervoor zorgen dat de main thread zal wachten met uitvoeren totdat de thread is afgelopen
    // dit commando is optioneel
	pthread_join(thread, (void**)&a);

    // ruim de thread op (optioneel)
    pthread_exit(&thread);
	printf("In thread: %d\n", a->m_m);

	return 0;
}

// deze functie zal in de thread lopen
void* threadFunction(void* args) {
	Test* t = (Test*) args; // args terugcasten naar oorspronkelijk object
	printf("In thread: %d\n", t->m_m);

	return new Test(4);
}
}
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan