Re: simple pthread
"io_x" <a@b.c.invalid> ha scritto nel messaggio
news:4e2e7ad0$0$15664$4fafbaef@reader2.news.tin.it...
what do you think about this?
It is a good way for threads?
#include <stdio.h>
#include <iostream.h>
#include <windows.h>
unsigned count=0;
unsigned index=-1;
unsigned array[256];
#define ini InitializeCriticalSection
#define lock EnterCriticalSection
#define unlock LeaveCriticalSection
#define end DeleteCriticalSection
#define P printf
CRITICAL_SECTION dataTh;
int hhh;
unsigned long __stdcall PrintMsg(void* a)
{//thread function
unsigned aa;
aa=*(unsigned*)a;
while(count<=100)
{lock( &dataTh );
count++;
if(count<=100)
{cout << "Tread number=" << aa << "; ";
cout << "I Incremented count: " << count << "\n";
}
else {++hhh; P("wait 10sec hhh=%d\r", hhh);}
unlock( &dataTh );
}
return 0;
}
unsigned StartMe(int i)
{// starting thread
unsigned long id=0;
void *hThread;
++index; index&=255; array[index]=i;
hThread=CreateThread(0, 0, PrintMsg, array+index, 0, &id);
if(hThread == 0 ) return -1;
return 0;
}
int main(void)
{int i;
ini(&dataTh);
for(i=0; i<100; ++i)
if((int)StartMe(i)==-1) break;
Sleep(10000); // 10 secondi
end(&dataTh);
printf("\n");
return 0;
}
Tread number=0; I Incremented count: 1
Tread number=1; I Incremented count: 2
Tread number=3; I Incremented count: 3
Tread number=5; I Incremented count: 4
Tread number=2; I Incremented count: 5
Tread number=7; I Incremented count: 6
Tread number=9; I Incremented count: 7
Tread number=11; I Incremented count: 8
Tread number=13; I Incremented count: 9
Tread number=4; I Incremented count: 10
Tread number=6; I Incremented count: 11
Tread number=8; I Incremented count: 12
Tread number=15; I Incremented count: 13
Tread number=10; I Incremented count: 14
Tread number=12; I Incremented count: 15
Tread number=17; I Incremented count: 16
Tread number=19; I Incremented count: 17
Tread number=21; I Incremented count: 18
Tread number=14; I Incremented count: 19
Tread number=16; I Incremented count: 20
Tread number=0; I Incremented count: 21
Tread number=24; I Incremented count: 22
Tread number=23; I Incremented count: 23
Tread number=25; I Incremented count: 24
Tread number=27; I Incremented count: 25
Tread number=29; I Incremented count: 26
Tread number=22; I Incremented count: 27
Tread number ; I Incremented count: 28
Tread number=18; I Incremented count: 29
Tread number=31; I Incremented count: 30
Tread number=26; I Incremented count: 31
Tread number=33; I Incremented count: 32
Tread number=28; I Incremented count: 33
Tread number=35; I Incremented count: 34
Tread number=30; I Incremented count: 35
Tread number=37; I Incremented count: 36
Tread number=39; I Incremented count: 37
Tread number=1; I Incremented count: 38
Tread number=41; I Incremented count: 39
Tread number=43; I Incremented count: 40
Tread number=45; I Incremented count: 41
Tread number=32; I Incremented count: 42
Tread number=34; I Incremented count: 43
Tread number=36; I Incremented count: 44
Tread number=47; I Incremented count: 45
Tread number=49; I Incremented count: 46
Tread number=38; I Incremented count: 47
Tread number=40; I Incremented count: 48
Tread number=51; I Incremented count: 49
Tread number=53; I Incremented count: 50
Tread number=42; I Incremented count: 51
Tread number=55; I Incremented count: 52
Tread number=44; I Incremented count: 53
Tread number=59; I Incremented count: 54
Tread number=57; I Incremented count: 55
Tread number=46; I Incremented count: 56
Tread number=48; I Incremented count: 57
Tread number=63; I Incremented count: 58
Tread number=61; I Incremented count: 59
Tread number=50; I Incremented count: 60
Tread number=3; I Incremented count: 61
Tread number=65; I Incremented count: 62
Tread number=66; I Incremented count: 63
Tread number=67; I Incremented count: 64
Tread number=64; I Incremented count: 65
Tread number=69; I Incremented count: 66
Tread number=62; I Incremented count: 67
Tread number=60; I Incremented count: 68
Tread number=58; I Incremented count: 69
Tread number=56; I Incremented count: 70
Tread number=54; I Incremented count: 71
Tread number=52; I Incremented count: 72
Tread number=71; I Incremented count: 73
Tread number=73; I Incremented count: 74
Tread number=75; I Incremented count: 75
Tread number=68; I Incremented count: 76
Tread number=77; I Incremented count: 77
Tread number=79; I Incremented count: 78
Tread number=70; I Incremented count: 79
Tread number=72; I Incremented count: 80
Tread number=81; I Incremented count: 81
Tread number=76; I Incremented count: 82
Tread number=5; I Incremented count: 83
Tread number=74; I Incremented count: 84
Tread number=83; I Incremented count: 85
Tread number=87; I Incremented count: 86
Tread number=89; I Incremented count: 87
Tread number=91; I Incremented count: 88
Tread number=93; I Incremented count: 89
Tread number=95; I Incremented count: 90
Tread number=85; I Incremented count: 91
Tread number=97; I Incremented count: 92
Tread number=78; I Incremented count: 93
Tread number=99; I Incremented count: 94
Tread number=80; I Incremented count: 95
Tread number=82; I Incremented count: 96
Tread number=84; I Incremented count: 97
Tread number=86; I Incremented count: 98
Tread number=88; I Incremented count: 99
Tread number=90; I Incremented count: 100
wait 10sec hhh=100