Thảo luận Bài 5

Trang 8 trong tổng số 9 trang Previous  1, 2, 3, 4, 5, 6, 7, 8, 9  Next

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down

Ưu điểm của lập trình đa luồng

Bài gửi  DaoThaiHuyI12A on 5/4/2012, 10:33

Sự đáp ứng: đa luồng một ứng dụng giao tiếp cho phép một chương trình tiếp tục chạy thậm chí nếu một phần của nó bị khóa hay đang thực hiện một thao tác dài, do đó gia tăng sự đáp ứng đối với người dùng. Thí dụ, một trình duyệt web vẫn có thể đáp ứng người dùng bằng một luồng trong khi một ảnh đang được nạp bằng một luồng khác.
Chia sẻ tài nguyên: Mặc định, các luồng chia sẻ bộ nhớ và các tài nguyên của các quá trình mà chúng thuộc về. Thuận lợi của việc chia sẽ mã là nó cho phép một ứng dụng có nhiều hoạt động của các luồng khác nhau nằm trong cùng không gian địa chỉ.
Kinh tế: cấp phát bộ nhớ và các tài nguyên cho việc tạo các quá trình là rất đắt. Vì các luồng chia sẻ tài nguyên của quá trình mà chúng thuộc về nên nó kinh tế hơn để tạo và chuyển ngữ cảnh giữa các luồng. Khó để đánh giá theo kinh nghiệm sự khác biệt chi phí cho việc tạo và duy trì một quá trình hơn một luồng, nhưng thường nó sẽ mất nhiều thời gian để tạo và quản lý một quá trình hơn một luồng. Trong Solaris 2, tạo một quá trình chậm hơn khoảng 30 lần tạo một luồng và chuyển đổi ngữ cảnh chậm hơn 5 lần.
Sử dụng kiến trúc đa xử lý: các lợi điểm của đa luồng có thể phát huy trong kiến trúc đa xử lý, ở đó mỗi luồng thực thi song song trên một bộ xử lý khác nhau. Một quá trình đơn luồng chỉ có thể chạy trên một CPU. Đa luồng trên một máy nhiều CPU gia tăng tính đồng hành. Trong kiến trúc đơn xử lý, CPU thường chuyển đổi qua lại giữa mỗi luồng quá nhanh để tạo ra hình ảnh của sự song song nhưng trong thực tế chỉ một luồng đang chạy tại một thời điểm.
avatar
DaoThaiHuyI12A

Tổng số bài gửi : 41
Join date : 15/02/2012
Age : 27
Đến từ : Bến Tre

Xem lý lịch thành viên https://sites.google.com/site/daothaihuy/

Về Đầu Trang Go down

Những lợi ích của đa luồng

Bài gửi  TrinhThiPhuongThaoI12C on 5/4/2012, 19:07

- Khả năng đáp ứng
- Chia sẽ tài nguyên
- Tiết kiêm
- Tận dụng được thế mạnh của kiến trúc đa xử lý
Vd: Lập trình xử lý công việc bán vé máy bay, gửi và rút tiền ở ngân hàng đều cần đến công nghệ đa luồng.

TrinhThiPhuongThaoI12C

Tổng số bài gửi : 18
Join date : 15/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Những lợi ích của công nghệ đa luồng

Bài gửi  TRANTHINHPHAT (I11C) on 5/4/2012, 21:24

Tiết
kiệm (Economy): Cấp phát bộ nhớ và tài nguyên cho tiến trình là công
việc tốn kém. Do luồng chung tài nguyên với cha và các luồng khác, việc
tạo lập và chuyển ngữ cảnh cũng nhanh hơn (Solaris 2: Tạo tiến trình
chậm hơn 30 lần, Chuyển ngữ cảnh chậm hơn 5 lần).
Ví dụ: Các bạn trong lớp là các luồng đang dùng chung một cái bảng, ai cần ghi thi ghi, ai cần thì chụp hình về xem

Tận
dụng được thế mạnh của kiến trúc đa xử lý: Đa luồng làm tăng tính song
song trên hệ máy nhiều CPU. Mỗi luồng có thể chạy bởi CPU riêng.

Khả
năng đáp ứng (Responsiveness) tốt hơn: Trong khi một luồng bị ách hoặc
quá bận, luồng khác vẫn vận hành bình thường (Luồng chính của trình
duyệt vẫn tương tác với người dùng trong khi dữ liệu được lấy về).

dụ: Các cô ở tổng đài 108 là các luồng. Khi khách hàng điện thoại hỏi
108. Nếu chỉ có 1 cô phải trực 10 máy điện thoại thì khi chỉ có 1 cuộc
điện thoại gọi đến thì cô sẽ trả lời tốt nhưng khi có khoảng 3 cuộc điện
thoại trở lên thì cô không thể trả lời được kịp hết.
Nếu có nhiều cô cùng trực điện thoại thì lúc đó sẽ tốt hơn, đáp ứng được nhu cầu của khách hàng khi họ gọi đến .
Nếu trong thời điểm đó khách hàng thứ hai gọi 108, thì một trong các cô (cô thứ 2) còn lại sẽ trả lời cho khách hàng.

Chia
sẻ tài nguyên (Resource Sharing): Theo mặc định, các luồng có thể dùng
chung bộ nhớ và tài nguyên của luồng cha. Vài luồng cùng vận hành trong 1
vùng địa chỉ, do đó dễ dùng chung tài nguyên hơn so với trường hợp đa
tiến trình.
Ví dụ: Trong nhà ta có kệ sách, tivi, xe gắn máy, ... mọi người trong nhà có thể dùng chung sách, tivi, xe máy.

TRANTHINHPHAT (I11C)

Tổng số bài gửi : 52
Join date : 29/08/2011
Age : 28
Đến từ : THU DAU MOT, BINH DUONG

Xem lý lịch thành viên

Về Đầu Trang Go down

Hàm trong win32.API về đa luồng

Bài gửi  Đỗ Phan Diễm Hương I12A on 6/4/2012, 09:24

Giới thiệu các hàm của Win32 API dùng để lập trình đa luồng
- CreateThread: Tạo một luồng để thực thi trong địa chỉ lời gọi tiến trình
-ExitThread: Dùng để kêt thúc một luồng
-GetCurrentThread: Có chức năng trả về mục quản tạm cho luồng hiện tại
-TerminateThread:Có chức năng ngắt luồng
-SetThreadPriority: Có chức năng thiết lập giá trị ưu tiên cho một luồng
avatar
Đỗ Phan Diễm Hương I12A

Tổng số bài gửi : 13
Join date : 17/02/2012
Age : 27

Xem lý lịch thành viên

Về Đầu Trang Go down

Trình bày nguyên lý tập nguồn và cho ví dụ minh họa

Bài gửi  Đỗ Phan Diễm Hương I12A on 6/4/2012, 21:47

Tập luồng (Thread Pools):
• Tiến trình cha tạo lập sẵn một tập luồng khi khởi động.
• Các luồng trong tập luồng luôn sẵn sàng chờ công việc.
• Khi tiến trình cha (ví dụ Web Server) nhận thêm một yêu cầu, một luồng được đánh thức và đưa vào vận hành.
• Phục vụ xong, luồng được đưa trả về tập luồng.
• Nếu số yêu cầu lớn hơn số luồng trong tập, tiến trình cha chờ đến khi có luồng được giải phóng.
Ví dụ:
Trong một doanh trai quân đội sẽ có một tướng lĩnh (tiến trình cha) và sẽ có một đội binh (tập luồng).
Đội binh này sẽ sẳn sàng chiến đầu khi có mệnh lệnh (sẵn sàng chờ công việc).
Khi có một tên địch đột nhập, Tướng lĩnh sẽ điều binh sĩ 1 (một luồng) đi bắt tên địch (một luồng được đánh thức và đưa vào vận hành).
Trong khi đó, lại có thêm một tên địch khác đột nhập (nhận thêm một yêu cầu), Tướng lĩnh sẽ điều binh sĩ 2 (một luồng) đi bắt địch (một luồng khác được đánh thức và đưa vào vận hành).
Sau khi bắt địch xong, binh sĩ sẽ trở về doanh trại (luồng được trả về tập luồng)
avatar
Đỗ Phan Diễm Hương I12A

Tổng số bài gửi : 13
Join date : 17/02/2012
Age : 27

Xem lý lịch thành viên

Về Đầu Trang Go down

Thảo luận Bài 5

Bài gửi  DuongTrungQuan on 7/4/2012, 22:32

cám ơn các bạn nhiều.

DuongTrungQuan

Tổng số bài gửi : 57
Join date : 16/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Các mô hình đa luồng

Bài gửi  LeMInhTien(I11C) on 8/4/2012, 21:58

- Mô hình Many – to – One là nhiều User level threads được ánh xạ vào một Kernel Thread. Việc quản lý được thực hiện ở User Level, khi có một thread bị block thì toàn bộ các Process cũng bị block theo.
- Mô hình One – to – One là mỗi User level thread được gắn với một Kernel thread. Khi có một user thread mới được tạo ra thì cũng cần tạo một Kernel thread tương ứng, lúc này chi phí quá lớn.
- Mô hình Many – to – Many nhiều User level thread được phân chia ánh xạ vào một số Kernel thread. Tránh được các khuyết điếm của 2 mô hình trên.
avatar
LeMInhTien(I11C)

Tổng số bài gửi : 40
Join date : 07/09/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

Phân biệt khái niệm luồng với tiến trình

Bài gửi  LeMInhTien(I11C) on 8/4/2012, 22:04

* Luồng là tiến trình nhẹ (LWP - Light Weight Process), một đơn vị cơ bản sử dụng CPU. Luồng cũng có thông tin trạng thái như tiến trình hệ thống (HWP - Heavy Weight Process)
* Tiến trình là chương trình trong thời gian thực hiện (đặt dưới sự quản lý của hệ điều hành). Có sự phân biệt giữa Tiến trình hệ thống với Tiến trình người dùng.
avatar
LeMInhTien(I11C)

Tổng số bài gửi : 40
Join date : 07/09/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

Ích lợi của đa luồng?

Bài gửi  TranLeThanhVu_I12A on 9/4/2012, 05:09

1/ Khả năng đáp ứng tốt hơn, khi 1 luồng bị treo hoặc quá bận thì luồng khác vẫn làm việc 1 cách bình thường (Luồng chính của người dùng vẫn tương tác tốt với người dùng trong khi vẫn lấy được dữ liệu về.
VD: Tổng đài 188 là 1 vd minh họa của đa luồng (1 cô nhân viên trực trả lời tổng đài khi 1 khách hàng gọi hỏi (7 kì quan trên thế giới là những kì quan nào…) Trong khi đó nhân viên đó đang bận nhưng tổng đài có rất nhiều cô nhân viên khác phục vụ (gọi là đa luồng), 1 cô phục vụ (gọi là đơn luồng), cô nhân viên đó đang bận vẫn có sự trả lời của cô khác cứ như thế làm việc gọi là đa luồng.
2/ Đa luồng chia sẽ tài nguyên dể dàng, mặc định các luồng có thể dùng chung bộ nhớ và tài nguyên của luồng cha. Vài luồng vận hành cùng 1 địa chỉ do đó dể dùng chung tài nguyên hơn so với trường hợp đa tiến tình.
VD: Trong lớp học việc dùng chung 1 cái bảng dể sửa dể thay đổi, nếu thay đổi sẽ thay đổi tất cả.
3/ Đa luồng tiết kiệm hơn: Cấp phát bộ nhớ và tài nguyên cho tiến trình là công việc tốn kém. Do luồng chung tài nguyên với cha và các luồng khác, việc tạo lập và chuyển ngữ cảnh cũng nhanh hơn. Việc tạo mới 1 luồng sẽ dể hơn rất nhiều so với việc tạo mới 1 tiến tình mới.
VD: Trong 1 gia đình có anh chị sắp xây dựng 1 gia đình mới nếu như xây thêm 1 căn nhà (hoặc căn phòng) sẽ tốn kém và khó hơn rất nhiều so với việc ngăn 1 căn phòng trong 1 gia đình lớn thành nhiều ngăn (chia ra nhiều phòng sẽ nhanh hơn và tiết kiệm hơn rất nhiều so với tạo dựng mới, tiết kiệm hơn rất nhiều.
4/ Tận dụng được thế mạnh của kiến trúc đa xử lý : Đa luồng làm tăng tính song song trên hệ máy nhiều CPU. Mỗi luồng có thể chạy bởi CPU riêng. Việc chuyển từ luồng này sang luồng kia là rất nhanh.
5/ Lập trình đa luồng dể hơn là lập trình đa tiến trình

TranLeThanhVu_I12A

Tổng số bài gửi : 7
Join date : 16/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Tập Luồng - Thread Pool

Bài gửi  TranLeThanhVu_I12A on 9/4/2012, 05:13

- Tập luồng(Thread pools): khi một luồng chính tạo ra tập luồng (tập luồng bao gồm nhiều luồng con sẵn sàn chờ công việc được giao )
- Khi tiến trình cha nhận được yêu cầu công việc , thì 1 luồng con trong tập được đánh thức và đưa vào vận hành .
- Vận hành xong luồng con sẽ được trả về tập luồng .
- Nếu số yêu cầu lớn hơn số luồng trong tập luồng , tiến trình cha sẽ chờ đến khi có luồng được giải phóng .
Ví dụ:
a/ Tổng đài điện thoại 108 , có nhiều nhân viên trực điện thoại là các luồng con ,cùng làm việc trong 1 văn phòng , mỗi nhân viên trực 1 điện thoại, khi không có cuộc gọi đến của khách hàng nhân viên không làm việc đang ở trạng thái ngủ , khi có cuộc gọi đến của khách hàng nhân viên trả lời cuộc gọi chính là luồng được đánh thức và đưa vào vận hành, kết thúc cuộc gọi của khách hàng , nhân viên lại được nghỉ.

b/ Trong 1 trung đội các chiến sĩ vận quân trang đầy đủ đang ở trạng thái ngủ (Chính là các luồng con). Tương lĩnh( là tiến trình cha), khi địch tới sẽ đánh thức 1 chiến sĩ dậy đối phó với địch. Khi địch rút thì chiến sĩ đó lại tiếp tục về vị trí ngủ, nếu có địch tiếp tục tới có thể đánh thức chiến sĩ khác hoặc cũng là chiến sỉ đó.

TranLeThanhVu_I12A

Tổng số bài gửi : 7
Join date : 16/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Lập trình đa luồng trong windows

Bài gửi  phamphihung55 on 9/4/2012, 09:45

Một luồng thường được gọi là quá trình nhẹ (lightweight proces-LWP), là một đơn vị cơ bản của việc sử dụng CPU; nó hình thành gồm: một định danh luồng (thread ID), một bộ đếm chương trình, tập thanh ghi và ngăn xếp. Nó chia sẻ với các luồng khác thuộc cùng một quá trình phần mã, phần dữ liệu, và tài nguyên hệ điều hành như các tập tin đang mở và các tín hiệu. Một quá trình truyền thống (hay quá trình nặng) có một luồng điều khiển đơn. Nếu quá trình có nhiều luồng điều khiển, nó có thể thực hiện nhiều hơn một tác vụ tại một thời điểm.
avatar
phamphihung55

Tổng số bài gửi : 83
Join date : 16/02/2012
Age : 27

Xem lý lịch thành viên

Về Đầu Trang Go down

Khái niệm Luồng và so sánh với tiến trình truyền thông

Bài gửi  TrinhThiPhuongThaoI12C on 9/4/2012, 21:58

Một luồng thường được gọi là tiến trình nhẹ (lightweight proces-LWP), là một đơn vị cơ bản của việc sử dụng CPU; nó hình thành gồm: một định danh luồng (thread ID), một bộ đếm chương trình, tập thanh ghi và ngăn xếp. Nó chia sẻ với các luồng khác thuộc cùng một tiến trình phần mã, phần dữ liệu, và tài nguyên hệ điều hành như các tập tin đang mở và các tín hiệu.
Một tiến trình truyền thống (hay tiến trình nặng) có một luồng điều khiển đơn. Nếu tiến trình có nhiều luồng điều khiển, nó có thể thực hiện nhiều hơn một tác vụ tại một thời điểm.
Sự giống nhau:
- Đều có thông tin trạng thái
- Luồng cũng là tiến trình nhưng là tiến trình nhẹ (Light Weigh Process)
- Đa luồng hay đa tiến trình có thể liên quan đến một chương trình.
- Chia sẻ tài nguyên cho nhau, tăng tốc tính toán, đảm bảo tính đơn thể
- Do luồng cùng vận hành trong 1 vùng địa chỉ, vì vậy dễ dùng chung tài nguyên hơn đa tiến trình
Ví dụ: Mình cần mượn xe đi đâu đó thì mượn xe trong gia đình để đi thì dễ hơn mượn của người ngoài
- Do luồng chung tài nguyên với luồng cha nên việc tạo lập và chuyển đổi ngữ cảnh cũng nhanh hơn tiến trình
Ví dụ: Việc ngăn phòng riêng ra trong nhà thì dễ hơn việc xây thêm hay mua thêm một nhà khác.
- Cấp phát tài nguyên bộ nhớ cho tiến trình khá tốn kém.
- Lập trình đa luồng thì dễ hơn lập trình đa tiến trình.
Sự khác nhau:
- Lập trình đa luồng dễ hơn lập trình đa tiến trình.
- Tạo mới một tiến trình khó hơn tạo mới một luồng.
- Luồng không cần gởi, nhận thông điệp.
- Luồng chuyển đổi ngữ cảnh nhanh và ít chiếm tài nguyên hơn tiến trình.
- Luồng chia sẻ tài nguyên dùng chung dể hơn tiến trình.

TrinhThiPhuongThaoI12C

Tổng số bài gửi : 18
Join date : 15/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thảo luận Bài 5

Bài gửi  PhamDucPhuong(I12A) on 10/4/2012, 23:56

phamphihung55 đã viết:Một luồng thường được gọi là quá trình nhẹ (lightweight proces-LWP), là một đơn vị cơ bản của việc sử dụng CPU; nó hình thành gồm: một định danh luồng (thread ID), một bộ đếm chương trình, tập thanh ghi và ngăn xếp. Nó chia sẻ với các luồng khác thuộc cùng một quá trình phần mã, phần dữ liệu, và tài nguyên hệ điều hành như các tập tin đang mở và các tín hiệu. Một quá trình truyền thống (hay quá trình nặng) có một luồng điều khiển đơn. Nếu quá trình có nhiều luồng điều khiển, nó có thể thực hiện nhiều hơn một tác vụ tại một thời điểm.
mình bổ sung ví dụ thực tế về lập trình đa luồng
khi có khách đến nhà, chúng ta (luồng chính) phải tiếp khách ở phòng khách, khi khách chưa về thì chúng ta không làm được việc khác. Khi nhà có thư thì ta không thể ra lấy thư vào được, người giúp việc (luồng phụ) sẽ ra lấy thư và đem vào cho ta

PhamDucPhuong(I12A)

Tổng số bài gửi : 17
Join date : 19/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Đa Luồng

Bài gửi  nguyenthihongtham_I12C on 11/4/2012, 10:36

câu 1: Công nghệ đa luồng

1. Kha nang dap ung(Responsiveness) tot hon: trong khi mot luong bi ach hoac qua ban, luong khac van van hanh binh thuong(luong chinh cua trinh duyet van tuong tac voi nguoi dung trong khi du lieu duoc lay ve).
2.Chia se tai nguyen(Resource Sharing): theo mac dinh,cac luong co the dung chung bo nho va tai nguyen cua luong cha. Vai luong cung van hanh trong 1 vung dia chi,do do de dung chung tai nguyen hon so voi truong hop da tien trinh.
3.Tiet kiem(Economy): cap phat bo nho va tai nguyen cho tien trinh la cong viec ton kem. Do luong chung tai nguyen voi cha va cac luong khac, viec tao lap va chuyen ngu canh cung nhanh hon(Solaris 2: tao tien trinh cham hon 30 lan,chuyen ngu canh cham hon 5 lan).
4. Tan dung duoc the manh cua kien truc da xu ly: da luong lam tanh tinh song song tren he may nhieu CPU. Moi luong co the chay boi CPU rieng.
5. Lap trinh da luong de hon lap trinh da tien trinh.

Câu 2 :
Nguyên lý Tập luồng (Thread Pools):
- Tiến trình cha tạo lập sẵn một tập luồng khi khởi động.
- Các luồng trong tập luồng luôn sẵn sàng chờ công việc.
- Khi tiến trình cha (ví dụ Web Server) nhận thêm một yêu cầu, một luồng được đánh thức và đưa vào vận hành.
- Phục vụ xong, luồng được đưa trả về tập luồng.
 Nếu số yêu cầu lớn hơn số luồng trong tập, tiến trình cha chờ đến khi có luồng được giải phóng.

Ví dụ : trong một nhà hàng, hệ thống phục vụ là một tiến trình bao gồm nhà bếp chuẩn bị thức ăn, nước uống, nhân viên phục vụ… các luồng được chuẩn bị sẵn sàng để chờ phục vụ thực khách.
Khi có một nhóm khách hàng tới, thì nhà hàng sẽ tiếp nhận và điều phối một nhóm nhân viên chuẩn bị bàn ghế, thực đơn …cho khách, tương tự khi có nhóm khác, nhà hàng sẽ cho nhóm khác thực hiện.
Khi phục vụ xong bàn này, nhóm này sẽ được đưa vào chờ và chuẩn bị phục vụ nhóm khách hàng khác….

câu 4: các hàm cơ bản trong thư viện win32 / API

- suspendThread() Tạm ngưng một luồng cho đến khi được gọi lần nữa.
- getCurrentThread() Trả về mục quảng của luồng hiện hành
- getTickCount() nhận số mili giây(ms) trôi qua.
- resumThread() hàm đánh thức

nguyenthihongtham_I12C

Tổng số bài gửi : 17
Join date : 16/02/2012
Age : 27
Đến từ : Dak Lak

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thảo luận Bài 5

Bài gửi  nguyenthanhnghi_I12C on 11/4/2012, 22:55

Câu 1: Phân biệt khái niện luồng với tiến trình. Và trình bày những lợi ích của công nghệ đa luồng

Phân biệt khái niệm luồng với tiến trình
• Luồng: là tiến trình nhẹ (LWP - Light Weight Process), một đơn vị cơ bản sử dụng CPU. Luồng cũng có thông tin trạng thái như của tiến trình hệ thống (HWP - Heavy Weight Process)
Ví dụ: Lớp học là một tiến trình. Trong lớp sẽ có một giáo viên(đơn luồng) và các học viên (đa luồng)
• Tiến trình: là chương trình trong thời gian thực hiện (đặt dưới sự quản lý của hệ điều hành). Có sự phân biệt Tiến trình hệ thống (của Hệ điều hành) với Tiến trình người dùng.
Ví dụ: Lớp HCTH102C đang học là một tiến trình

Những ích lợi của công nghệ đa luồng
• Khả năng đáp ứng (Responsiveness) tốt hơn: Trong khi một luồng bị ách hoặc quá bận, luồng khác vẫn vận hành bình thường (Luồng chính của trình duyệt vẫn tương tác với người dùng trong khi dữ liệu được lấy về).
Ví dụ: Các cô ở tổng đài 108 là các luồng. Khi khách hàng điện thoại hỏi 108, thì một trong các cô (cô thứ 1) sẽ trả lời. Nếu trong thời điểm đó khách hàng thứ hai gọi 108, thì một trong các cô (cô thứ 2) còn lại sẽ trả lời cho khách hàng.
• Chia sẻ tài nguyên (Resource Sharing): Theo mặc định, các luồng có thể dùng chung bộ nhớ và tài nguyên của luồng cha. Vài luồng cùng vận hành trong 1 vùng địa chỉ, do đó dễ dùng chung tài nguyên hơn so với trường hợp đa tiến trình.
Ví dụ: Trong nhà ta có kệ sách, tivi, xe gắn máy, ... mọi người trong nhà có thể dùng chung sách, tivi, xe máy.
• Tiết kiệm (Economy): Cấp phát bộ nhớ và tài nguyên cho tiến trình là công việc tốn kém. Do luồng chung tài nguyên với cha và các luồng khác, việc tạo lập và chuyển ngữ cảnh cũng nhanh hơn (Solaris 2: Tạo tiến trình chậm hơn 30 lần, Chuyển ngữ cảnh chậm hơn 5 lần).
Ví dụ: Các bạn trong lớp là các luồng đang dùng chung một cái bảng, ai cần ghi thi ghi, ai cần thì chụp hình về xem
• Tận dụng được thế mạnh của kiến trúc đa xử lý: Đa luồng làm tăng tính song song trên hệ máy nhiều CPU. Mỗi luồng có thể chạy bởi CPU riêng

nguyenthanhnghi_I12C

Tổng số bài gửi : 14
Join date : 15/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thảo luận Bài 5

Bài gửi  minhtam_I12C on 11/4/2012, 22:57

Câu 3: Lập trình đa luồng trong windows
• Windows sử dụng các hàm trong thư viện Win32 API.
• Ứng dụng Windows vận hành như một tiến trình với 1 hoặc nhiều luồng.
• Bài toán Sản xuất-Tiêu thụ có thể được thực thi bằng Ứng dụng đa luồng (Visual C++ 6.0).
• Nhận độ ưu tiên của luồng bằng hàm: int GetThreadPriority (HANDLE threadHandle)
• Thay đổi độ ưu tiên của luồng bằng hàm:BOOL SetThreadPriority (HANDLE threadHandle, int priority)
Với độ ưu tiên priority:
THREAD_PRIORITY_LOWEST ( -2)
THREAD_PRIORITY_BELOW_NORMAL ( -1)
THREAD_PRIORITY_NORMAL ( 0 )
THREAD_PRIORITY_ABOVE_NORMAL (+1)
THREAD_PRIORITY_HIGHEST (+2)

• Có thể lập trình đa luồng với Visual Basic 6.0:
. Sản xuất – Tiêu thụ
. Animations
. Colors

minhtam_I12C

Tổng số bài gửi : 14
Join date : 15/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Ưu việc của công nghệ đa luồng trong HĐH hiện đại

Bài gửi  TRANTHINHPHAT (I11C) on 12/4/2012, 08:15

+Tính ưu việc của công nghệ đa luồng trong các HĐH hiện đại là:
- Các hệ điều hành rất khéo léo cấp phát một các công bằng cho các luồng nằm trong 1 tiến trình, do luồng là một tiến trình nhẹ nên rất được các HĐH hiện đại sử dụng, cho phép hình thành nhiều tiến trình con(luồng) chạy song song cùng nhau trong cùng 1 tiến trình.
- Khả năng đáp ứng tốt hơn: khi có công nghệ đa luồng thì nhiều luồng sẽ được chạy cùng nhau, khi có một luồng bị bận không thể đáp ứng được thỉ các luồng khác ngay lập tức sẽ thay thế nó làm công việc đó.
- Chia sẽ tài nguyên: theo mặc định thì các luồng có thể sử dụng cùng chung bộ nhớ và tài nguyên của luồng cha, các luồng vận hành trong cùng một địa chĩ sẽ dễ dàng chia sẽ tài nguyên hơn trường hơp đa tiến trình.
- Tiết kiệm: việc cấp phát bộ nhớ và tài nguyên cho các tiến trình là một công việc rất tốn kém, do các luồng dùng chung tài nguyên với luồng cha nên sẽ giảm thiểu chi phí cấp phát cho nhiều luồng khác nhau,
- Đa luồng giúp làm tăng tính song song trên trên cấu trúc máy nhiều CPU, do vậy mỗi luồng có thể chạy trên các CPU riêng,
- Việc lập trình đa luồng sẽ dễ dàng hơn việc lập trình đa tiến trình, vì luồng là một tiến trình nhẹ, là con của tiến trình nên việc lập trình từng cái nhỏ thành cái lớn sẽ dễ dàng hơn.

TRANTHINHPHAT (I11C)

Tổng số bài gửi : 52
Join date : 29/08/2011
Age : 28
Đến từ : THU DAU MOT, BINH DUONG

Xem lý lịch thành viên

Về Đầu Trang Go down

Giới thiệu các hàm của Win32 API dùng để lập trình đa luồng.

Bài gửi  nguyenthingocmai_I12A on 12/4/2012, 08:59

- CreateThread: tạo một luồng để thực thi trong địa chỉ lời gọi tiến trình.
- ExitThread: dùng để kết thúc một luồng.
- GetCurrentThread: có chức năng trả về mục quản tạm cho luồng hiện tại.
- TerminateThread: có chức ngắt luồng.
- SetThreadPriority: có chức năng thiết lập giá trị ưu tiên cho một luồng.

nguyenthingocmai_I12A

Tổng số bài gửi : 26
Join date : 17/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

phân tích những đặc điểm của luồng và so sánh với khái niệm tiến trình.

Bài gửi  tranthithanhuyen85 (I11C) on 12/4/2012, 17:09

- Luồng là tiến trình nhẹ. 1 đơn vị cơ bản sử dụng CPU, luồng cũng có thông tin trang thái như tiến trình truyền thốing.
- Tiến trình có thể có 1 luồng chính với nhiều luồng phụ. Mỗi luồng có khả năng chia sẻ tài nguyên với các luồng khác trong tiến trình.
- Nhiều luồng có thể cùng 1 mã chương trình.
* So sánh giữa khái niện lluồng và khái niệm tiến trình:
- Giống nhau:
Luồng cũng là tiến trình bình thường, đều được cấp phát CPU và được quản lý bởi hệ điều hành.
- Khác nhau:
Tiến trình truyền thống là tiến trình nặng, bao gồm nhiều luồng bên trong.
ví dụ:
Lớp học là 1 tiến trình, trong lớp sẽ có 1 giáo viên là đơn luồng và các học viên là đa luồng.

tranthithanhuyen85 (I11C)

Tổng số bài gửi : 25
Join date : 29/08/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

Nguyên lý tập luồng (Theard Pools)

Bài gửi  tranthithanhuyen85 (I11C) on 12/4/2012, 17:15

Nguyên lý tập luồng (Theard Pools)
- Yêu cầu hệ thống tạo sẵn số lượng luồng (luồng là 1 tiến trình nên cũng có 5 trạng thái)
- Tiến trình cha gồm nhiều luồng chung code
- Các luồng trong tập luồng luôn sẵn sàng chờ công việc khi được gọi sẽ làm việc rất nhanh.
ví dụ:
Trang bị cho các đội quân vũ khí và các đội quân này đang trong trạng thái chờ và khi được yêu cầu sẽ nhập cuộc rất nhanh.

tranthithanhuyen85 (I11C)

Tổng số bài gửi : 25
Join date : 29/08/2011

Xem lý lịch thành viên

Về Đầu Trang Go down

LỢI ÍCH CỦA CÔNG NGHỆ ĐA LUỒNG?

Bài gửi  TranHoangNhanI12C on 17/4/2012, 21:37

- Khả năng đáp ứng tốt hơn: khi 1 luồng bị treo hoặc quá bận thì luồng khác vẫn làm việc 1 cách bình thường (Luồng chính của người dùng vẫn tương tác tốt với người dùng trong khi vẫn lấy được dữ liệu về.
VD: Tổng đài 188 là 1 vd minh họa của đa luồng (1 cô nhân viên trực trả lời tổng đài khi 1 khách hàng gọi hỏi (7 kì quan trên thế giới là những kì quan nào…) Trong khi đó nhân viên đó đang bận nhưng tổng đài có rất nhiều cô nhân viên khác phục vụ (gọi là đa luồng), 1 cô phục vụ (gọi là đơn luồng), cô nhân viên đó đang bận vẫn có sự trả lời của cô khác cứ như thế làm việc gọi là đa luồng.
- Đa luồng chia sẽ tài nguyên dễ dàng, mặc định các luồng có thể dùng chung bộ nhớ và tài nguyên của luồng cha. Vài luồn vận hành cùng 1 địa chỉ do đó dể dùng chung tài nguyên hơn so với trường hợp đa tiến tình.
VD: Trong lớp học việc dùng chung 1 cái bảng để sửa dễ thay đổi, nếu thay đổi sẽ thay đổi tất cả.
- Đa luồng tiết kiệm hơn: Cấp phát bộ nhớ và tài nguyên cho tiến trình là công việc tốn kém. Do luồn chung tài nguyên với cha và các luồng khác, việc tạo lập và chuyển ngữ cảnh cũng nhanh hơn. Việc tạo mới 1 luồng sẽ dể hơn rất nhiều so với việc tạo mới 1 tiến tình mới.
VD: Trong 1 gia đình có anh chị sắp xây dựng 1 gia đình mới nếu như xây thêm 1 căn nhà (hoặc căn phòng) sẽ tốn kém và khó hơn rất nhiều so với việc ngăn 1 căn phòng trong 1 gia đình lớn thành nhiều ngăn (chia ra nhiều phòng sẽ nhanh hơn và tiết kiệm hơn rất nhiều so với tạo dựng mới, tiết kiệm hơn rất nhiều.
- Tận dụng được thế mạnh của kiến trúc đa xử lý : Đa luồng làm tăng tính song song trên hệ máy nhiều CPU. Mỗi luồng có thể chạy bởi CPU riêng. Việc chuyển từ luồng này sang luồng kia là rất nhanh.
- Lập trình đa luồng dễ hơn là lập trình đa tiến trình.

TranHoangNhanI12C

Tổng số bài gửi : 45
Join date : 16/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Những ích lợi của công nghệ đa luồng

Bài gửi  DiepMaiNgocYen(I12A) on 18/4/2012, 15:07

+ Đảm bảo được khả năng đáp ứng của tiến trình tốt hơn, khi lập trình đa luồng thì một khi 1 luồng có sự cố thì luồng khác vẫn làm việc, vẫn phản hồi ,trong trường hợp lập trình đơn luồng khi gặp sự cố thì luồng đó sẽ chậm và làm chậm luôn cả tiến trình, đa luồng một ứng dụng giao tiếp cho phép một chương trình tiếp tục chạy thậm chí nếu một phần của nó bị khóa hay đang thực hiện một thao tác dài, do đó gai tăng sự đáp ứng đối với người dùng, Ví dụ : một trình duyệt web vẫn có thể đáp ứng người dùng bằng một luồng trong khi vẫn nạp bằng một luồng khác.
Ví dụ : Các cô ở tổng đài 108 là các luồng , khi khách hàng điện thoại hỏi 108, thì một trong các cô (người thứ nhất) sẽ trả lời, nếu trong thời điểm đó khách hàng thứ hai gọi 108,thì một trong các cô (cô thứ 2) còn lại sẽ trả lời
+ Theo mặc định các luồng có thể dùng chung bộ nhớ và tai nguyên của luồng cha. Thuận lợi của việc chia sẻ mã là nó cho phép một ứng dụng có nhiều hoạt động của các luồng khác nằm trong cùng không gian, địa chỉ,vài luồng cùng vận hành trong một vùng địa chỉ dễ dùng chung tài nguyên hơn so với trường hợp đa tiến trình.
Ví dụ : trong nhà có kệ sách, xe máy, máy vi tính … mọi người có thể dùng chung và sử dụng chung kệ sách, xe máy, máy vi tính. Trong khi không thể dùng chung những đồ dùng trên với nhà khác được
Trong lớp chúng ta có thể dùng bảng củ lớp mình, chúng ta có thể chia sẻ các thông tin cần thiết cho tất cả các thành viên ở trong lớp biết,trong khi chúng ta khong thể dùng chung bảng của lớp khác để chia sẻ thông tin cho lớp mình được.
+ Tiết kiệm (Economy) : Cấp phát bộ nhớ và tài nguyên cho tiến trình là công việc rất tốn kém. Do luồng có thể dùng chung tài nguyên với luồng cha và các luồng khác, việc tạo lập ngữ cảnh cũng nhanh hơn (Solaris2, tạo tiến trình chậm hơn 30 lần, chuyển ngữ cảnh chậm hơn 5 lần
Ví dụ : Các bạn trong lớp là các luồng đang dùng chung một cái bảng của lớp, ai cần ghi thì ghi, ai cần thì chụp hình về xem
Có thể bố trí một chỗ ngồi ở trong lớp cho một bạn đến sau dễ dàng hơn việc làm một chiếc ghế khác cho bạn đó.
+ Chuyển ngữ cảnh từ luồng này sang luồng khác thì nhanh hơn chuyển ngữ cảnh từ tiến trình này sang tiến trình khác.
+ Tận dụng được ưu thế kiến trúc đa xử lý (nhiều CPU). Khi đa luồng thì 1 luồng dùng CPU này và 1 luồng dùng CPU khác sẽ nhanh hơn và các luồng có thể làm việc song song , mỗi luồng có thể chạy bởi CPU riêng. Tiến trình đa luồng sẽ làm việc nhanh hơn tiến trình đơn luồng.
+ Lập trình đa luồng dễ dàng hơn lập trình đa tiến trình.

DiepMaiNgocYen(I12A)

Tổng số bài gửi : 27
Join date : 23/02/2012
Age : 28
Đến từ : Long Xuyên - An Giang

Xem lý lịch thành viên

Về Đầu Trang Go down

Chương trình đa luồng gặp những thử thách cho việc lập trình

Bài gửi  lymydung_I12A on 19/4/2012, 15:25

Những chương trình đa luồng có nhiều thử thách cho việc lập trình, gồm ngữ nghĩa của lời gọi hệ thống fork và exec. Những vấn đề khác gồm huỷ bỏ luồng, quản lý tín hiệu, và dữ liệu đặc tả luồng.

Nhiều hệ điều hành hiện đại cung cấp nhân hỗ trợ luồng như Windows NT, Windows 2000, Solaris 2 và Linux. Pthread API cung cấp tập hợp các hàm để tạo và quản lý luồng tại cấp người dùng. Java cung cấp một API tương tự cho việc hỗ trợ luồng. Tuy nhiên, vì các luồng Java được quản lý bởi
JVM và không phải thư viện luồng cấp người dùng hay nhân, chúng không rơi vào
loại luồng người dùng hay nhân.

lymydung_I12A

Tổng số bài gửi : 21
Join date : 15/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Ba loại cài đặt luồng thông thường

Bài gửi  lymydung_I12A on 19/4/2012, 15:35


Mô hình nhiều-một ánh xạ nhiều luồng cấp người dùng tới một luồng cấp nhân. Quản lý luồng được thực hiện trong không gian người dùng vì thế nó hiệu quả nhưng toàn bộ quá trình sẽ bị khóa nếu một luồng thực hiện lời gọi hệ thống khóa. Vì chỉ một luồng có thể truy xuất nhân tại một thời điểm nên nhiều luồng
không thể chạy song song trên nhiều bộ xử lý. Green threads-một thư viện luồng được cài đặt trên các hệ điều hành không hỗ trợ luồng nhân dùng mô hình nhiều-một.
Mô hình một-một ánh xạ mỗi luồng người dùng tới một luồng nhân. Nó cung cấp khả năng đồng hành tốt hơn mô hình nhiều-một bằng cách cho một luồng khác chạy khi một luồng thực hiện lời gọi hệ thống nghẽn; nó cũng cho phép nhiều luồng chạy song song trên các bộ xử lý khác nhau. Chỉ có một trở ngại trong mô hình này là tạo luồng người dùng yêu cầu tạo một luồng nhân tương ứng. Vì chi phí cho việc tạo luồng nhân có thể đè nặng lên năng lực thực hiện của ứng dụng, các cài đặt cho mô hình này giới hạn số luồng được hỗ trợ bởi hệ thống. Windows NT, Windows 2000 và OS/2 cài đặt mô hình một-một này.
Mô hình nhiều-nhiều đa hợp nhiều luồng cấp người dùng tới số lượng nhỏ hơn hay bằng các luồng nhân. Số lượng các luồng nhân có thể được xác định hoặc một ứng dụng cụ thể hay một máy cụ thể (một ng dụng có thể được cấp nhiều luồng nhân trên một bộ đa xử lý hơn trên một bộ đơn xử lý). Trong khi mô hình nhiều-một cho phép người phát triển tạo nhiều luồng người dùng như họ muốn, thì đồng hành hật sự là không đạt được vì nhân có thể lập thời biểu chỉ một luồng tại mộ thời điểm. Mô hình một-một cho phép đồng hành tốt hơn nhưng người phát triển phải cẩn thận không tạo ra quá nhiều luồng trong một ứng dụng. Mô hình nhiều-nhiều gặp phải một trong hai vấn đề khiếm khuyết: người phát triển có thể tạo nhiều luồng người dùng khi cần thiết và các luồng nhân tương ứng có thể chạy song song trên một bộ đa xử lý. Khi một luồng thực hiện một lời gọi hệ thống khóa, nhân có thể lập thời biểu một luồng khác thực thi. Solaris 2, IRIX, HP-UX, và Tru64 UNIX hỗ trợ mô hình này.

lymydung_I12A

Tổng số bài gửi : 21
Join date : 15/02/2012

Xem lý lịch thành viên

Về Đầu Trang Go down

Những ích lợi của đa luồng????

Bài gửi  NguyenthechinhI12A on 20/4/2012, 00:39

Khả năng đáp ứng (Responsiveness) tốt hơn: Trong khi một luồng bị ách hoặc quá bận, luồng khác vẫn vận hành bình thường (Luồng chính của trình duyệt vẫn tương tác với người dùng trong khi dữ liệu được lấy về).
Chia sẻ tài nguyên (Resource Sharing): Theo mặc định, các luồng có thể dùng chung bộ nhớ và tài nguyên của luồng cha. Vài luồng cùng vận hành trong 1 vùng địa chỉ, do đó dễ dùng chung tài nguyên hơn so với trường hợp đa tiến trình.
Tiết kiệm (Economy): Cấp phát bộ nhớ và tài nguyên cho tiến trình là công việc tốn kém. Do luồng chung tài nguyên với cha và các luồng khác, việc tạo lập và chuyển ngữ cảnh cũng nhanh hơn (Solaris 2: Tạo tiến trình chậm hơn 30 lần, Chuyển ngữ cảnh chậm hơn 5 lần).
Tận dụng được thế mạnh của kiến trúc đa xử lý: Đa luồng làm tăng tính song song trên hệ máy nhiều CPU. Mỗi luồng có thể chạy bởi CPU riêng.
avatar
NguyenthechinhI12A

Tổng số bài gửi : 24
Join date : 16/02/2012
Age : 27
Đến từ : BẮC NINH - HCM

Xem lý lịch thành viên

Về Đầu Trang Go down

Re: Thảo luận Bài 5

Bài gửi  Sponsored content


Sponsored content


Về Đầu Trang Go down

Trang 8 trong tổng số 9 trang Previous  1, 2, 3, 4, 5, 6, 7, 8, 9  Next

Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang


 
Permissions in this forum:
Bạn không có quyền trả lời bài viết