Avatar
0
Nguyễn Thái Sơn Professional
Nguyễn Thái Sơn Professional
Nonblocking IO với socket
Anh Dũng ơi, em tưởng rằng Nonblocking IO chỉ xảy ra với đọc ghi file, database hoặc lấy dữ liệu từ service khác. Vậy mục đích của Nonblocking IO với socket có khác biệt với việc sử dụng blocking IO với socket thông thường k ạ.

https://viblo.asia/p/blocking-io-va-non-blocking-io-client-server-socket-1VgZvX415Aw
  • Answer
Remain: 5
1 Answer
Avatar
monkey Professional
monkey Professional
Nonblocking socket IO phù hợp với socket server hơn, vì ở phía server sẽ có nhiều client kết nối đến, vì thế nó cần phải tối ưu thời gian xử lý. Vì nếu là blocking I/O cứ có bất kỳ dữ liệu nào đến thì server lại xử lý, ví dụ duy nhất 1 client gửi đến đúng 1 byte server cũng xử lý trong khi nó xử lý thì có biết bao thằng đang chờ. Vậy nên khi sử dụng Nonblocking I/O với kiểu thế này:

while(true) {
  lấy ra danh sách connection có dữ liệu gửi đến
  xử lý các connection này và dữ liệu
  sleep 1 chút để nhả tài nguyên cho hệ điều hành
}

Sẽ đảm bảo tài nguyên của server được phân bổ đều và tối ưu xử lý hơn.

  • 0
  • Reply