You are on page 1of 5

[c#] MULTITHREADING C#

http://forum.simple.vn/threads/8636-c-MULTITHREADING-C

Log in

Help

Register

What's New?

Articles

Forum
Forum Actions Quick Links Advanced Search

New Posts FAQ Calendar Community

Forum
Like 84

Cng ngh thng tin


Send

Lp trnh phn mm

.NET

[c#] MULTITHREADING C#

Results 1 to 1 of 1

Thread: [c#] MULTITHREADING C#


Like Be the first of your friends to like this. Thread Tools Search Thread Display

22-05-2012, 01:56 PM

#1

kiemkhachgiangho
Junior Member

[c#] MULTITHREADING C#
1. S qua v lung (Thread)

Feb 2011 Join Date: 24 Posts: 1 Thanks: Thanked 0 Times in 0 Posts

Bi vit ny mnh s hng dn cho cc bn mi tm hiu v a lung v ng dng ca n v c m t trn ngn ng C# cho d hiu. Trc tm hiu n cng vt v v n kh hiu gi mun gip cht xu g cho cc bn (Bn s cm thy v cng n gin nu lm vic nhiu vi n, ch l do k nng ca mnh yu ln cm thy phc tp) Mt lung l mt chui lin tip nhng s thc thi (m lnh hay cu lnh) trong chng trnh (ng dng). Trong mt chng trnh C#, d thy vic thc thi c bt u bng phng thc main() v tip tc cho n khi kt thc hm main(). Cu trc ny rt hay cho nhng chng trnh c mt chui xc nh nhng nhim v lin tip, nhng thng th trong mt chng trnh ng c nhiu hn mt cng vic vo cng mt lc. Mt v d rt hay v kh thc t m mnh thy trn din n tin hc ca "can_qua", cc bn cng tham kho Vn quan trng l bn phi tm ra mt cch no chia mt cng vic ln thnh nhng cng vic nh m Tng hp T ng Chnh t B du kiu mi [ Bt/Tt (F9) n/Hin (F8) ]

Mudim v0.8

Tt

VNI

Telex

Viqr

1 of 5

4/16/2013 1:03 PM

[c#] MULTITHREADING C#

http://forum.simple.vn/threads/8636-c-MULTITHREADING-C

thi. V d, m giao vic cho con l "lm vic xong mi c i coi xi-n". "Cng vic ln" ny c th gm 3 vic nh "qut nh", "ra chn", v i coi "xi-n". Trong ch c "coi xi-n" sau khi lm xong hai vic kia. R rng l bn mun lm xong vic nh cng sm cng tt vi vt, nn bn ku thng em bn qut nh, bn th ra chn, c hai ngi cng lm ng thi. Ra chn xong trc, bn phi i thng em bn thng bo l qut nh cng xong th bn mi v i coi xi-n c. Nh vy multithread cho "ra chn" v "qut nh" lm tng hiu sut thc hin cng vic ca bn (so vi vic bn lm tun t ra chn, qut nh, coi xi-n). V d nh v a lung V d ny mnh s m t 2 lung (cho n gin) c thc thi cng mt lc. y th bn c tng tng ra rng c hai thng tn l A v B thi m t 0 cho n 100, thng no m xong trc th bo co v c v ch. Tng ng mnh s to ra 2 phng thc A() v B() (mi lung s x l mt thng). PHP Code:
void A() { for(int i=0; i<=100; i++) { Console.WriteLine(i.ToString ()); "); } Console.WriteLine("A c xong // Bo co c xong } void B() { for(int i=0; i<=100; i++) { Console.WriteLine(i.ToString ()); "); } Console.WriteLine("B c xong // Bo co c xong

By gi thy gio (hoc l bn) bng cao hng gi 2 thng ln thi c --> 2 thng A v B cng c n y trong phng thc hm main() ca chng trnh bn s phi gi 2 thng ny PHP Code:
static void main() { ThreadStart ts1 = new ThreadStart(A); // C h nh thng A ln c ThreadStart ts2 = new ThreadStart(B); // C h nh thng B ln c // Sn sng cho cuc u (thi m nhanh :D ) Thread tA = new Thread(ts1); Thread tB = new Thread(ts2); // Bt u bm gi tA.Start(); tB.Start(); tA.Join(); Tng hp T ng Chnh t

Mudim v0.8

Tt

VNI

Telex

Viqr

B du kiu mi [ Bt/Tt (F9) n/Hin

(F8) ]

2 of 5

4/16/2013 1:03 PM

[c#] MULTITHREADING C#

http://forum.simple.vn/threads/8636-c-MULTITHREADING-C

// Hai thng tranh nhau m Console.WriteLine("Cuc thi kt thc"); // Ch n khi 2 thng c xong, khng bit th ng no s thng :D Console.ReadLine();

Truyn tham s cho Thread C nhiu cch truyn tham s, tu theo nhu cu m dng sao cho ph hp Thng qua phng thc Start(object) th bn c th truyn tham s theo cch ny. V d: PHP Code:
using System; using System.Threading; class ThreadSample { public static void Main() { Thread newThread = new Thread(ThreadSamp le.DoWork); newThread.Start(100); // D liu truyn vo l mt s nguyn // Start lung s dng phng thc th hin (instance method) // th trc tin ta cn khi to n tr c khi gi ThreadSample worker = new ThreadSample() ; newThread = new Thread(worker.DoMoreWork ); newThread.Start("Truyn i tng cho th read thc thi"); // Nu bit trc c i tng truyn vo th ta cn ghp kiu cho n // vic s dng c hiu qu hn } public static void DoWork(object data) { Console.WriteLine("y l lung tnh."); Console.WriteLine("D liu truyn vo: D

i khi ta cng s dng ThreadPool cho vic khi chy mt lung mi vi tham s l _Param PHP Code:
ThreadPool.QueueUserWorkItem(new WaitCallback (_ThreadProc), _Param);

Bn hy tham kho v n ti y: http://dotnetperls.com /threadpool Ch i mt lung khc Bng vic s dng phng thc Join(); ta c th cho php ch i mt lung khc thc hin xong ( thu thp d liu chng hn - do chia nh cng vic m), th lung gi n mi tip tc c cng vic ca n PHP Code:
static void Main(string[] args) { Console.WriteLine("Main thread: G i lung th 2 ThreadProc()..."); Tng hp T ng Chnh t B du kiu mi [ Bt/Tt (F9) n/Hin

Mudim v0.8

Tt

VNI

Telex

Viqr

(F8) ]

3 of 5

4/16/2013 1:03 PM

[c#] MULTITHREADING C#

http://forum.simple.vn/threads/8636-c-MULTITHREADING-C

Thread t = new Thread(new ThreadS tart(ThreadProc)); t.Start(); for (int i = 0; i < 50; i++) { Console.WriteLine("Main threa d: Do Some Work."); Thread.Sleep(0); } Console.WriteLine("Main thread fi nished: And call t.Join()"); Console.WriteLine("Main thread t m thi ang c dng li"); t.Join(); // Dng ti y // Sau khi ThreadProc hon tt Ma in thread tip tc cng vic ca n // Tip tc thc thi 3 dng lnh tip theo Console.WriteLine("Thread.Join() has returned."); Console.WriteLine("Main lm xo ng vic"); Console.ReadLine();

i s cho Join() c th l int hoc TimeSpan, khong thi gian gii hn m Main thread c th ch c, v d PHP Code:
t.Join(10000);

ngha l, sau 10s m ThreadProc cha lm xong vic ca n th Main thread khng ch na, tip tc cng vic khc
Reply With Quote

Quick Navigation

.NET

Top

Previous Thread | Next Thread

All times are GMT +8. The time now is 01:45 PM.

Mudim v0.8

Tt

VNI

Telex

Viqr

Powered by vBulletin Version 4.2.0 t Tng hp T ng Chnh

B du kiu mi [ Bt/Tt (F9) n/Hin

(F8) ]

4 of 5

4/16/2013 1:03 PM

[c#] MULTITHREADING C#

http://forum.simple.vn/threads/8636-c-MULTITHREADING-C

Mudim v0.8

Tt

VNI

Telex

Viqr

Tng hp

T ng (F8) ]

Chnh t B du kiu mi [ Bt/Tt (F9) n/Hin

5 of 5

4/16/2013 1:03 PM

You might also like