gegeven is de volgende code, zelf gemaakt!
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?
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....
[ Voor 7% gewijzigd door Verwijderd op 08-03-2004 15:32 ]