[Spice-devel] [PATCH spice-server v2 1/2] docs: Add some notes on event scheduling and threading

Frediano Ziglio fziglio at redhat.com
Fri Mar 29 11:15:28 UTC 2019


Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
 docs/spice_threading_model.txt | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/docs/spice_threading_model.txt b/docs/spice_threading_model.txt
index 9351141c8..1ed82d4b4 100644
--- a/docs/spice_threading_model.txt
+++ b/docs/spice_threading_model.txt
@@ -39,6 +39,20 @@ connect, disconnect and migrate. Connect and migrate are asynchronous (the job
 is done while the current thread is doing something else) while disconnect is
 synchronous (the main thread will wait for termination).
 
+One aspect to take into consideration is the event scheduling. SPICE uses some
+`SpiceCoreInterface` to handle events. As the events will be handled from a
+thread based on the core interface you have to use the correct core. Each
+channel has an associated core interface which can be retrieved using
+`red_channel_get_core_interface`. There's also a main core interface you can get
+using `reds_get_core_interface`. `reds_core_timer_*` and `reds_core_watch_*`
+functions use the main core interface.
+Even though multiple channel types run in the main thread and so could use
+directly the main code interface, for coherence, rule simplicity and to allows
+the code to be moved in a separate thread easily if needed, it's advisable to
+use the channel core interface (that will be the main core interface in this
+case).
+Currently character devices and not channel code runs in the main thread.
+
 Reference counting and ownership
 --------------------------------
 ->  pointer
-- 
2.20.1



More information about the Spice-devel mailing list