You are on page 1of 8

AI HOC QUOC GIA TP.

HO CH MINH TRNG AI HOC CONG NGHE THONG TIN KHOA CONG NGHE PHAN MEM ----------

BI TP LN
MN HC:

H IU HNH

THREAD

Gio vin hng dn: Sinh vin thc hin:


L HUNH TRUNG HU HONG ANH HNG NGUYN MINH TR 09520082 09520114 09520318

TPHCM 12/2010

Ni dung bo co:
Khi qut v Thread Gii thiu chung v chng trnh Gii thiu chi tit v chng trnh Tng kt

I- Khi qut v Thread


Thread l n v c bn s dng cc ti nguyn ca CPU thc thi mt cng vic. Mt thread bao gm thread ID, program counter, tp thanh ghi v stack. Cc thread trong cng mt process s dng chung cc ti nguyn ca h iu hnh, v v n cng thuc v mt process nn tt nhin n cng chia s phn code section v data section ca process . Trc y, mt process truyn thng (hay cn gi l heavyweight process) ch c th iu khin mt thread duy nht. Nu mt process c th iu khin nhiu thread, n c th lm c nhiu cng vic hn trong cng mt thi im. Hnh nh di y s m t s khc nhau gia mt heavyweight process ch s dng mt thread so vi mt multithreaded process vi nhiu lung x l cng lc. Tc dng ca multithread: p ng nhanh i vi ngi dng, chia s ti nguyn trong qu trnh, tnh kinh t, v kh nng thun li trong kin trc a x l.

II- Gii thiu chung v chng trnh


Chng trnh s dng Thread gip tm tt c cc s nguyn t trong phm vi 2 s cho trc, sau xut cc s theo dng file. Chng trnh c vit bng ngn ng C trong mi trng Visual Studio 2008. Chng trnh c u vo l 1 file dng text c tn c nh l input.txt (Hnh 1) dng cha thng s gm s th nht l kch thc mng nhp vo, 2 s tip theo l 2 s cho trc tm cc s trong phm vi 2 s . Sau khi c y d liu cn thit u vo, chng trnh s xut ra mn hnh tt c cc s nguyn t trong phm vi 2 s cho trc (Hnh 2), ng thi xut cc s ra 1 file dng text c tn c nh l output.txt (Hnh 3).

Hnh 1: File cha thng s u vo vi tn c nh l input.txt

Hnh 2: Kt qu xut ra mn hnh

Hnh 3: Kt qu xut ra dng file text vi tn c nh l output.txt

III- Gii thiu chi tit v chng trnh


Chng trnh c vit di dng hng cu trc, bao gm:

Cc bin, thng s khai bo: o mutex : dng iu phi 2 thread. o pThread[2] : 2 bin thread. o ID[2] : 2 bin a ch thread. o a[2]: mng dng cha 2 s nhp vo lc u. o b[1000] : mng dng cha dy s nguyn t tm c. o na = 2: s phn t mng a. o nb = 0: s phn t mng b. o head, tail, mid : cc gi tr cn s dng khc trong chng trnh.
3

Chi tit cc hm: - void getinfo(const char *filename):

o o o

Hm ly thng tin cn thit t file input.txt. Trng hp nu nh khng tm thy file input.txt th hm ny s xut ra dng lnh: "Khong co tap tin". Khi tm c file input.txt, lm s thy 2 gi tr l ch s u v ch s cui trong file input.txt gip cho vic xc nh phm vi cn tm s nguyn t.

- void printinfo():

Hm xut thng tin khi chng trnh chy.

- void printoutput():

Hm xut cc s nguyn t tm c ra mn hnh.

DWORD WINAPI Thread_Sonho Thread_Solon (LPVOID):

(LPVOID)

DWORD

WINAPI

Thread_Sonho tm cc s nguyn t trong phm vi t s nh hn trong 2 s cho trc n gia 2 s cho trc. Thread_Solon tm cc s nguyn t trong phm vi t gia 2 s cho trc n s ln hn trong 2 s cho trc. Hai hm WaitForSingleObject(mutex, INFINITE) v ReleaseMutex(mutex)gip iu phi 2 Thread khng cho c 2 Thread cng cp nht bin nb.

int SNT(int x):

o o

Hm kim tra mt s c phi l s nguyn t khng. Nu s l s nguyn t th hm s tr v gi tr l 1, cn s khng phi l s nguyn th s tr v gi tr 0.

int main():

Hm chnh ca chng trnh, gip thc hin yu cu cn gii quyt. o Hm s gn head v tail ln lt l s nh v s ln trong file input.txt. Sau s gn mid l trung bnh cng ca head v tail nhm gip cho vic thc thi song song 2 thread. o Trong hm main, 2 thread s c to ra nh hm CreateThread.
o

WaitForMultipleObjects gip thc thi v kt thc 2 thread c to ra. o Sau khi 2 thread kt thc th cc s nguyn t s c ghi ra thnh 1 file dng text c tn c nh l output.txt.
o

IV- Tng kt
u im : Chng trnh n gin, thng s u vo c ly t file nn d dng kim sot l chnh sa. u ra th hin c c trn mn hnh v xut ra dng file text tin cho ngi dng theo di. Nhc im: Chng trnh vit trn giao din console nn khng bt mt, cc k t u ra cn tng i kh theo di.

TPHCM ngy 15/12/2010 Ngi vit bo co

You might also like