Add developer notes about blocking GUI code

This commit is contained in:
Russell Yanofsky 2018-04-02 12:16:35 -04:00 committed by John Newbery
parent 9a61eed1fc
commit 9960137697

View file

@ -625,6 +625,19 @@ GUI
should not interact with the user. That's where View classes come in. The converse also should not interact with the user. That's where View classes come in. The converse also
holds: try to not directly access core data structures from Views. holds: try to not directly access core data structures from Views.
- Avoid adding slow or blocking code in the GUI thread. In particular do not
add new `interface::Node` and `interface::Wallet` method calls, even if they
may be fast now, in case they are changed to lock or communicate across
processes in the future.
Prefer to offload work from the GUI thread to worker threads (see
`RPCExecutor` in console code as an example) or take other steps (see
https://doc.qt.io/archives/qq/qq27-responsive-guis.html) to keep the GUI
responsive.
- *Rationale*: Blocking the GUI thread can increase latency, and lead to
hangs and deadlocks.
Subtrees Subtrees
---------- ----------