Lập trình song song trong .NET (Parallelism) – part 1

Story

Ngày nay, các dòng máy tính không phân cao thấp dựa trên số chấm của xung nhịp vi xử lý (như những năm 2000 trở về trước) mà tính toán nhiều hơn đến thiết kế tổng thể, độ tiêu thụ năng lượng… Ngoài các dòng máy tính chuyên dụng (chú trọng vào hiệu năng tính toán), đa số các dòng máy tính tập trung hắm đến đối tượng người dùng chiếm số đông là sinh viên, học sinh, nhân viên văn phòng, người dùng gia đình bình thường, doanh nhân…, mà những tác vụ thường xuyên nhất lai khá nhẹ nhàng và không đòi hỏi hiệu năng tính toán tập trung. Do đó, các nhà sản xuất máy tính không tâp trung transitor vào để tăng tốc độ của vi xử lý để thực hiện những tác vụ đòi hỏi sức mạnh mà chia thành nhiều đơn vị nhỏ hơn, tập trung vào việc tăng số đơn vị xử lý độc lập (core) để phân tán luồng xử lý.

Vậy, để tận dụng thế mạnh của những hệ thống mới, khái niệm lập trình song song (parallelism) ra đời, đòi hỏi các developer phải hiểu và sử dụng được. Tuy nhiên, khái niệm này lại không thực sự được ứng dụng rộng rãi. Khi được hỏi: “Bạn có biết đến khái niệm lập trình song song hay đa luồng xử lý không?”, ai cũng trả lời “Có”, nhưng khi hỏi: “Thế bạn có hiểu và nắm được cách triển khai lập trình song song không?” thì rất ít người tự tin.

Trong loạt bài này, mình sẽ tập trung xử lý vấn đề lập trình song song và mượn .NET (với bộ thư viện TPL từ .NET 4.0) để minh họa.

Advertisements

Data structures in javascript – part 1: Stack and queue

maxresdefault

StackQueue có lẽ là 2 trong những dạng cấu trúc dữ liệu phổ biến nhất được sử dụng hàng ngày. Chúng ta nghĩ đến stack ở việc Back trong trình duyệt, khi Undo trong trình soạn thảo văn bản; nghĩ đến Queue trong trình tự thực hiện của việc đăng kí nhiều event cho 1 element.