Đây là một chủ đề chung, Làm thế nào để xử lý sự kiện làm việc?
Điều này có nghĩa là đằng sau hậu trường - những gì xảy ra khi chúng được tạo ra.
Tôi có một ý tưởng sơ bộ - nhưng muốn được xác nhận.
Đây là một chủ đề chung, Làm thế nào để xử lý sự kiện làm việc?
Điều này có nghĩa là đằng sau hậu trường - những gì xảy ra khi chúng được tạo ra.
Tôi có một ý tưởng sơ bộ - nhưng muốn được xác nhận.
Câu trả lời:
Ở cấp độ thấp, trình xử lý sự kiện thường hoạt động bằng cách bỏ phiếu cho thiết bị và chờ ngắt phần cứng. Về cơ bản, một khối luồng nền, trong khi chờ một ngắt phần cứng xảy ra. Khi một ngắt xảy ra, chức năng thăm dò ý kiến dừng chặn. Sau đó, ứng dụng có thể tìm ra thiết bị xử lý nào gây ra sự gián đoạn và loại ngắt đó là gì và sau đó hành động tương ứng (ví dụ: bằng cách gọi một hàm xử lý sự kiện). Điều này thường được thực hiện trong một luồng riêng biệt để nó xảy ra không đồng bộ.
Tất nhiên, cách thức này được thực hiện thay đổi đáng kể tùy thuộc vào HĐH và loại thiết bị / đầu vào. Trên các hệ thống UNIX, một cách mà các trình xử lý sự kiện được triển khai cho những thứ như ổ cắm, cổng nối tiếp hoặc cổng USB là thông qua các cuộc gọi hệ thống chọn hoặc thăm dò . Một hoặc nhiều mô tả tệp / thiết bị (được liên kết với thiết bị, như ổ cắm mạng, cổng nối tiếp / USB, v.v.) được chuyển đến poll
cuộc gọi hệ thống - được cung cấp cho lập trình viên thông qua API C cấp thấp. Khi một sự kiện xảy ra trên một trong các thiết bị này, (như giả sử, một số dữ liệu đến trên một cổng nối tiếp), cuộc gọi hệ thống thăm dò sẽ dừng chặn và sau đó ứng dụng có thể xác định mô tả thiết bị nào gây ra sự kiện và loại sự kiện nào xảy ra .
Trên Windows, điều này được xử lý khác nhau, nhưng các khái niệm về cơ bản là giống nhau.