Where to put the networking thread?
- From: Gergely Polonkai <gnome gergely polonkai eu>
- To: gnome-devel-list gnome org
- Subject: Where to put the networking thread?
- Date: Tue, 21 Dec 2021 06:06:47 +0100
Hello List,
i’m about to create a new application that communicates via MQTT. For MQTT itself i chose the paho-c library
(if you have better alternatives at hand, especially if it’s already GLib “native”, i’m all ears.)
Paho-c doesn’t seem to play well with G(tk)Application, and i read somewhere that it’s generally considered
bad design to do the network communication and GUI in the same thread anyway, so i decided to do the MQTT
thing in a separate thread.
My first question is, where should i instantiate the GThead object? Should it be a separate entity (ie. a
global value)? If so, wouldn’t that introduce a problem when i activate an already running instance of my
app? Or should i make it a member of my application object? In that case, where should i create the thread?
In the constructor or somewhere else?
The second question is, how and when should i start this thread? I currently load my settings from GSettings
by binding them to my GtkApplicationʼs properties, and load the password from libsecret asynchronously. I
guess i should somehow coordinate password loading (only start libsecret operations after GSettings are
loaded), and start the MQTT connection only when the password is loaded. Is there a best practice for this?
And third, after that is done, i thought i will communicate using a GIO pipe between the MQTT and the GUI
threads. Does that sound like a good idea? Is there something better/unwritten standard for this? The other
option that came to mind is to send direct “commands” to my some GObjects i create based on the MQTT events
flowing in, but iʼm not sure it would bode well between threads.
Thanks in advance!
Best,
Gergely
[Date Prev][Date Next] [Thread Prev][Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]