30/09/2018, 19:40

Liên lạc giữa các Process theo kiểu Event-driven

Hiện tại mình muốn 2 process liên lạc với nhau theo kiểu như: Nếu process A gửi signal cho process B kia thì trong B sẽ có 1 hàm callback tương ứng được chạy và ngược lại. Hàm callback sẽ đóng vai trò chính trong việc truyền nhận dữ liệu (bật pipe…), còn signal ban đầu chỉ để kích hoạt callback.
Cho mình hỏi xem có cái công nghệ ipc nào hỗ trợ event-driven không , hoặc có cách nào sử dụng Pipe, Shared Memory mà ra được event-driven không . Chẳng lẽ cả 2 process cứ phải bật thread chạy vòng lặp vô hạn để đợi signal?
(Các bạn đừng bày mình sử dụng Socket nhé, cái này yêu cầu máy phải có driver mạng).

yoyo viết 21:49 ngày 30/09/2018

Bạn tìm hiểu thử dbus nha, cái này được dùng nhiều trong các root file system của linux lắm, giống như trình điều khiển wifi của ubuntu cũng dùng dbus.

明玉 viết 21:45 ngày 30/09/2018

Cảm ơn bạn, nhưng d-bus cho windows vẫn còn đang được làm chưa xong

yoyo viết 21:54 ngày 30/09/2018

Nếu trên môi trường windows bạn có thể tìm hiểu COM -Component Object Model

Phan Hoàng viết 21:43 ngày 30/09/2018

Thực ra thì D-Bus bạn hoàn toàn có thể viết mà (về cơ bản, nó là 1 service và cũng phải có thread chạy vô hạn để nghe signal thôi. Nhưng thay vì 2 Process nghe lẫn nhau thì nó đứng ra trung gian nhận signal và gửi task sang worker. Cái này được gọi là message bus system)

Nếu không muốn viết thì mình thấy có WinDBus dùng khá được (và dễ dùng).
COM thì không phải event-drivent programming mà là nhận gửi các binary object (được tạo ra dynamic) giữa các process với nhau. Cũng có thể tweak dùng cho trường hợp của bạn, nhưng mình nghĩ công sức tốn hơn nhiều so với việc viết một con message bus (có thể chỉ cần dùng cho 2 process của bạn mà thôi).

Bài liên quan
0