Prev Next

Integration / D Bus Interview Questions

Which is better and why: broadcasting a signal vs polling a property for state changes?

Neither approach is universally better; the right choice depends on how frequently the state actually changes and how quickly a subscriber genuinely needs to know about it, since signals and polling make opposite trade-offs between efficiency and simplicity.

Broadcasting a signal, such as PropertiesChanged, is efficient because it only generates traffic when something actually happens, and subscribers find out immediately rather than after some polling delay. Its downside is added complexity: the subscriber has to correctly register a match rule, handle the async, event-driven nature of receiving it, and gracefully deal with a signal being missed, for example if the subscriber wasn't connected yet when it fired, requiring an explicit Get or GetAll call on startup to establish the current state.

Polling a property with repeated Get calls is simpler to reason about and self-correcting, since each poll reflects the true current state regardless of what was missed before, but it wastes bus traffic and CPU on every poll where nothing changed, and it introduces a detection delay bounded by the polling interval.

In practice, the common and most robust pattern combines both: subscribe to the relevant signal for low-latency updates, but also call Get or GetAll once at startup to establish a correct initial state, rather than relying on either mechanism exclusively.

A downside of relying purely on signals for state tracking is:
The common robust pattern for tracking state combines:

More Related questions...

What is D-Bus? What is the purpose of D-Bus in Linux systems? What are the types of D-Bus buses? What is a D-Bus object path? What is a D-Bus interface? Define a D-Bus method call? What is a D-Bus signal? What are D-Bus properties? What is a well-known bus name? Describe a D-Bus unique connection name? How do you use dbus-send? What is dbus-monitor used for? List the basic D-Bus data types? What is the D-Bus daemon (dbus-daemon)? What is D-Bus introspection? What is the difference between the system bus and the session bus? Why is D-Bus service activation useful? How does D-Bus introspection work in practice? What is the difference between a D-Bus method call and a signal? How do you subscribe to D-Bus signals using match rules? Why does D-Bus use a variant type? What is the difference between D-Bus policy files and SELinux? When should you use asynchronous D-Bus calls instead of synchronous? How is bus name ownership managed in D-Bus? What is the org.freedesktop.DBus.Properties interface used for? How does the ObjectManager pattern work in D-Bus? Why do D-Bus messages include a serial number? What is the difference between GDBus and libdbus? How do you troubleshoot a D-Bus permission denied error? What is the difference between D-Bus and using a Unix domain socket directly? When would you choose dbus-broker over the reference dbus-daemon? How does D-Bus authentication work over a socket connection? Why is message alignment important in D-Bus marshaling? What is the difference between NO_REPLY_EXPECTED and a normal method call? How do you generate D-Bus interface bindings with gdbus-codegen? Explain the execution flow of a D-Bus method call from client to service? Explain the internal working of D-Bus service activation? Explain the lifecycle of a D-Bus connection from handshake to bus registration? What is the difference between D-Bus and gRPC for IPC? How can you optimize a system with heavy D-Bus signal traffic? Explain the internal working of dbus-broker's message dispatch? How do you troubleshoot a deadlock caused by synchronous D-Bus calls? What happens internally when a service calls RequestName? How does D-Bus handle multiple interfaces on a single object path? Explain the difference between the low-level libdbus API and the high-level GDBus API? Why doesn't increasing the D-Bus method call timeout always fix reliability issues? How do you design a D-Bus service with proper security policy isolation? Explain the internal working of the D-Bus wire protocol message format? How would you architect a D-Bus-based system for a multi-container environment? Which is better and why: broadcasting a signal vs polling a property for state changes?
Show more question and Answers...


Comments & Discussions