Nói chung làm thế nào để xử lý sự kiện làm việc?


14

Đâ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.



Rực rỡ, mẫu Người quan sát là những gì tôi đã tìm thấy: Tôi đã đọc trên web về vấn đề này và đọc một bài viết hay về chủ đề Lập trình hướng sự kiện. Trong bài viết này, nó thảo luận về quy trình của Mẫu thiết kế Handlers. Do đó, bạn có một loạt các Sự kiện đến với một Người điều phối, sau đó lấy sự kiện đó và phân tích nó để xác định loại sự kiện của nó, sau đó gửi từng sự kiện đến một trình xử lý có thể xử lý các sự kiện thuộc loại đó.
JHarley1

1
Nó giải thích làm thế nào bộ điều phối nó một vòng lặp vô hạn chỉ dừng lại khi (ví dụ với Ứng dụng GUI) chương trình được đóng lại. Và sau đó, làm thế nào bạn có Mẫu Người quan sát (hoặc Mẫu Xuất bản / Đăng ký) được sử dụng rộng rãi để thực hiện Lập trình hướng sự kiện với các khung GUI và cách nó hoạt động theo nguyên tắc Hollywood "Đừng gọi cho chúng tôi Chúng tôi sẽ gọi cho bạn" .
JHarley1

Bạn có thể nói lời giải thích trên là đầy đủ?
JHarley1

Nó phụ thuộc. Đối với một tổng quan cấp cao, nó là tốt. Tuy nhiên, để giải thích toàn diện và kỹ lưỡng, heck no. Khóa học như một lời giải thích có thể sẽ có nhiều trang làm việc vì điều này có thể khá lạ mắt như bạn có thể vào web và các công cụ sự kiện trên máy tính để bàn chẳng hạn.
JB King

Câu trả lời:


15

Ở 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 pollcuộ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.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.