Hallo zusammen,
wenn ich eine globale Variable
habe und mit
1 | pthread_create(&stackworker,NULL,&WorkerThread,this)
|
einen Thread (Thread 1) erzeuge, wird ein Thread erzeugt und
abgearbeitet.
1 | void * WorkerThread(void * arg) {
|
2 |
|
3 | // Process stack
|
4 | return NULL;
|
5 | }
|
Wenn ich nun einen weiteren Thread (Thread 2) auf die
Stackworkervariable erzeuge noch bevor Thread 1 beendet ist, so wird der
Thread 2 erzeugt sobald Thread 1 endet.
Dies ist der Zustand den ich eigentlich möchte, nur:
Ist diese Methode auch so zulässig (evtl. Speicherlecks, etc...)??
Danke,
Michael
Background:
Ich habe Funktionen welche zwar sofort zurückkehren aber eine weitere
Bearbeitung durch eine Messagequeue benötigen. Diese Queue bearbeite ich
im Thread, welchen ich auch in der jeweiligen Funktion erzeuge. Die
Queue im Thread wiederum kann eine Callbackfunktion aufrufen, welche
wiederum eine Funktion aufruft welche einen Queue benötigt. D.h. Es wird
ein neuer Queuethread in einem Queuethread erzeugt.
Die Threads sollen dabei nacheinander ablaufen.
1 | void Foo1() {
|
2 | ...
|
3 | createThread();
|
4 | }
|
5 |
|
6 | void Foo2() {
|
7 | ...
|
8 | createThread();
|
9 | }
|
10 |
|
11 | void Thread() {
|
12 | ...
|
13 | Foo2(); // Thread wird nach Foo2 verlassen
|
14 | }
|