Toon posts:

[c++] print Dammit!!

Pagina: 1
Acties:
  • 28 views sinds 30-01-2008

Verwijderd

Topicstarter
gegeven is de volgende code, zelf gemaakt! :7

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <windows.h>
#include <stdio.h>

DWORD WINAPI printA(LPVOID lpParam) 
{ 
    while (1){
        if (*(int*)lpParam == 1){
            printf("A\n");}
    }
    return 0; 
} 

DWORD WINAPI printB( LPVOID lpParam ) 
{ 
   while (1){
        if (*(int*)lpParam == 2){
            printf("B\n");}
    }
    return 0;
} 

DWORD WINAPI printC( LPVOID lpParam ) 
{ 
  while (1){
        if (*(int*)lpParam == 3){
            printf("C\n");}
    }
    return 0; 
}
 
VOID main( VOID ) 
{ 
    DWORD dwThreadIdA,dwThreadIdB,dwThreadIdC;
 
    HANDLE hThreadA,hThreadB,hThreadC; 
    int dwWhichThread = 2;
    
    hThreadA = CreateThread(NULL,0,printA,&dwWhichThread,0,&dwThreadIdA);
    if (hThreadA == NULL) {printf("mislukt");}
    else {printf("dwThreadIdA = %d",  *(DWORD*)dwThreadIdA);}
    
    hThreadB = CreateThread(NULL,0,printB,&dwWhichThread,0,&dwThreadIdB);
    if (hThreadB == NULL) {printf("mislukt");}
    else {printf("dwThreadIdB = %d",  *(DWORD*)dwThreadIdB);}

    hThreadC = CreateThread(NULL,0,printC,&dwWhichThread,0,&dwThreadIdC);
    if (hThreadC == NULL) {printf("mislukt");}
    else {printf("dwThreadIdC = %d",  *(DWORD*)dwThreadIdC);}
 
   // Check the return value for success. 
 
   CloseHandle( hThreadA );
   CloseHandle( hThreadB );
   CloseHandle( hThreadC );

}

Als ik dwWhichThread verander in 1 dan print ie dus netjes een A zoals het zou moeten. Als ik dwWhichThread verander in een 2 of een 3 zodat ie een B of een C zou moeten printen doet ie niets.... Verders wat ik raar vind is dat als ik de else takken weglaat bij de hThreadA dan print ie ook niets.... :? Hoe ken dat?

[ Voor 7% gewijzigd door Verwijderd op 08-03-2004 15:32 ]


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Uhm ja....

*!*!* Over topictitels in P&W - Updated 25 feb 04 *!*!*
P&W FAQ - De "quickstart"

Hoef ik niets verder aan toe te voegen hopelijk :X

Professionele website nodig?


  • curry684
  • Registratie: Juni 2000
  • Laatst online: 12-05 22:23

curry684

left part of the evil twins

Even wat ontopic opmerkingen zodat je een paar dingen kunt fixen voordat je een nieuw en net topic opent :)

Als je een thread maakt met een eindeloze loop zonder sleeps of andere yields erin komen de andere threads zelden meer aan de beurt (starvation). Je zult dus in die eindeloze loops een sleep(0) moeten zetten zodat ze kunnen rouleren.

Verder is CloseHandle wel de botst en foutst mogelijke manier om een thread af te sluiten, zelfs TerminateThread is netter. Doe gewoon netjes een global volatile bool even maken waarmee je de threads zichzelf kunt laten sluiten :)

Professionele website nodig?


Dit topic is gesloten.