SlideServe
Menu
Préférences
© SlideServe · v2026

MULTI-THREADING PROGRAMMING Csharp

zaria avatar
22 diapositives · 480 Views · Jul 31, 2014

MULTI-THREADING PROGRAMMING Csharp. (LẬP TRÌNH ĐA LUỒNG). NỘI DUNG. Các khái niệm vê ̀ Thread Tạo va ̀ diều khiển Thread Tạo Thread Truyền dữ liệu cho Thread Đô ̣ ưu tiên của Thread Các vấn đê ̀ của Thread Vấn đê ̀ Race Condition Vấn đê ̀ Deadlock

MULTI-THREADING PROGRAMMING Csharp - slide 1
01 / 22MULTI-THREADING PROGRAMMING Csharp
1 / 17

Télécharger la présentation

MULTI-THREADING PROGRAMMING Csharp
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. MULTI-THREADING PROGRAMMINGCsharp (LẬP TRÌNH ĐA LUỒNG)

  2. NỘI DUNG • Cáckháiniệmvề Thread • Tạovà diềukhiển Thread • Tạo Thread • Truyềndữliệucho Thread • Độ ưutiêncủa Thread • Cácvấnđề của Thread • Vấnđề Race Condition • Vấnđề Deadlock • Cáckỹthuậtđồngbộ

  3. Thread (concurrent programming) LậpTrìnhĐồngThời multiple threads

  4. Thread (concurrent programming) LậpTrìnhĐồngThời • Thread: Làmộtphần code cóthểthựchiệnđượctrongchươngtrình • Mộtứngdụnglàmộttậphợpnhiềunhiệmvụ(Task), mỗinhiệmvụđượcgánchomột Thread • Nhiều Thread đượcthựchiệnđồngthờiđượcgọilà Multiple Threading

  5. Thread (concurrent programming) LậpTrìnhĐồngThời • Khimộtứngdụng C# ở phía client đượcthựcthithìmột thread đượctựđộngtạorabởi CLR gọilà Main thread. • Từ Main thread tacóthểtạoracác Thread khác. • CLR cấpchomỗi Thread mộtvùngnhớriêngđểlưucácbiếncụcbộcủanó.

  6. Ứngdụngcủa Thread • Duytrìsựđápứngcủagiaodiệnđốivớithaotáccủangườidùng • Sửdụng CPU hiệuquảhơn • Chươngtrìnhthựchiệnnhanhhơn • Cho phépcácyêucầucóthểxửlýđồngthời

  7. TạoThreads • Tạomộtđốitượngthuộc class Thread vàtruyềnchonóphươngthứcsẽthựchiệnkhi Thread bắtđầuthựcthi (start) • Gọiphươngthức start đểbắtđầumột Thread • Truyềnthamsốcho Thread: • Thông qua phươngthức start (chỉdùngđượckhiphươngthứccó 1 thamsốkiểu Object) • Dùngbiểuthức Lambda khitạođốitượng (Phươngthứccósốthamsốvàkiểudữliệutùy ý)

  8. Tạo Threads (cont.) • Vídụ: Tạo, thựchiện Thread

  9. Tạo Threads (cont.) • Vídụ: Tạovàthựchiện Thread

  10. Phươngthức Join • Join: yêucầu “call thread” phảichờcác “called thread” kếtthúcrồimớikếtthúc • Vídụ: Khôngsửdụng join

  11. Phươngthức Sleep • Vídụ: sửdụngphươngthức join

  12. Phươngthức Sleep • Tạmdừng thread hiệntạitrongmộtkhoảngthờigian (tinhbằngmilisecond) • Khimột thread ở trạngthái sleep thìcpuđượcdùngbởi Thread khác • Vídụ: Khôngdùng sleep

  13. Phươngthức Sleep • Vídụ: Sửdụngthread.Sleep

  14. Độưutiêncủa Thread (Thread Priority) • Cho phépHệđiềuhànhquyếtđịnh: • Thờigiansửdụng CPU của Thread • Cơhộinhậnquyềnsửdụng CPU • Độưutiênđượcgánbằngmộttrongcácgiátrịcủaenum: • Vídụ:

  15. Hợpnhấtcác Thread (Thread Pooling) • Cho phépquảnlýcác Thread hiệuquảhơn • Quyếtđịnhkhinàothì start một thread • Cho phép qui địnhsố Thread tốiđa, tốithiểucóthểthựchiệnđồngthời

  16. Cácvấnđềkhisửdụng Thread (Threading Issues ) • Race Condition: Xuấthiệnkhihai hay nhiều Thread truyxuấtcùngmộttàinguyêntạicùngmộtthờiđiểm. • Vídụ: Xuấtthôngbáokhi state!=6

  17. Cácvấnđềkhisửdụng Thread (Threading Issues ) • Race Condition: • Tạo 20 Thread, mỗi Thread sẽthựchiệnhàmRaceCondition , thamsốtruyềncho 20 Thread làđốitượng state dẫnđến Race Condition • Nguyênnhân?

  18. Cácvấnđềkhisửdụng Thread (Threading Issues ) Đồngbộgiữacác Thread (Synchronization ): • Đểtránhtìnhtrạng Race Codition sửdụnggiảiphápđộngbộ (Synchronization). • Synchronization: một Thread khimuốnsửdụngmộttàinguyên (nếuchưasửdụngbởinhững Thread khác), nósẽ lock tàinguyênđóchođếnkhisửdụngxong. Các thread khácmuốnsửdụngtàinguyênnàyphảichờđếnkhitàinguyênđược unlock.

  19. Cácvấnđềkhisửdụng Thread (Threading Issues ) Đồngbộgiữacác Thread (Synchronization ): • Dùngcơchế Locking đểđồngbộ: Lock trênmộtđốitượngtrướckhithựchiệnlệnh Unlock đốitượngkhithựchiệnxong

  20. Cácvấnđềkhisửdụng Thread (Threading Issues ) Đồngbộgiữacác Thread (Synchronization ): • Đốitượngdùngtrong Lock: • Visible chotấtcảcácphầncủa Thread (thườngkhaibáotrong class) • Phảicókiểulà reference • Pham vi trong class: Private, Readonly

  21. Cácvấnđềkhisửdụng Thread (Threading Issues ) Deadlock :xảyrakhihai Thread cùngchờđểsửdụngtàinguyênđang lock bởi Thread kia (Thread 1 cố lock đốitượngđangsửdụngbởi Thread 2 vàngượclại) • Đểngănchặn Deadlock: DùngMonitor.TryEntervới timeout

  22. Cơchế Wait-Notify • Dùngđểđiềukhiểnsựphốihợpgiữacác Thread • Bàitoán Producer-Consumer (sảnxuất – Tiêuthụ) • C# dùngđốitượngcủalớpEventWaitHandleđểcàiđặtcơchếWait-Notify • CácphươngthứccủaEventWaitHandle: • WaitOne: Block Thread hiệntại, chođếnkhinhậnđược Notify từmột Thread khác • Set: Notify các Thread đang ở chếđộ waiting • Vídụ: xemvídụnonWaitNotifyvàThreadWaitNotify • (dong boket hop phoi hop)