#Notes: Parallel và Multi-Thread programming là gì? Hai kỹ thuật đó khác nhau ở điểm nào?

 Concurrency:

Doing more than one thing at a time.
Là làm nhiều hơn một việc trong cùng một thời gian.

Multithreading
A form of concurrency that uses multiple threads of execution.
Nhiều máy tính cá nhân và workstations có nhiều CPU core cho phép nhiều thread có thể thực hiện tác vụ đồng thời. Để tối ưu lợi thế của phần cứng, bạn có thể chạy song song (parallelize) code để phân tán công việc trên nhiều processor.
Multithreading liên quan tới việc sử dụng nhiều thread cùng lúc. Đó là 1 dạng của concurrency, nhưng không phải là dạng duy nhất.
Multithreading được ứng dụng ở thread pool, nơi mà các thread được phân bổ tự động để đáp ứng các request.

Parallel processing
Doing lots of work by dividing it up among multiple threads that run concurrently.
Parallel processing (hay là parallel programming) sử dụng multithreading để tối ưu hóa việc sử dụng nhiều processor.
Các CPUs ngày nay đều có nhiều core, nếu có nhiều công việc cần xử lý, Parallel processing sẽ chia nhỏ công việc ra nhiều thread, và các thread có thể chạy độc lập trên mỗi core khác nhau.
Parallel processing là 1 loại của Multithreading và multithreading là 1 loại của concurrency.

Asynchronous Programming
A form of concurrency that uses futures or callbacks to avoid unnecessary threads.
Asynchronous programming là 1 thể loại khác của concurrency vô cùng mạnh mẽ, sử dụng keywork async và await, lập trình đơn giản như synchronous (nonconcurrent).

Reactive Programming
A declarative style of programming where the application reacts to events.
Một loại khác của concurrency là reactive programming. Asynchronous programing cho phép ứng dụng start 1 operation mà sẽ hoàn thành ở 1 thời gian sau đó.
Reactive programming cũng gần giống như asynchronous programming, nhưng nó được xây dựng dựa trên các asynchronous event thay vì asynchronous operation.

Share:

0 nhận xét