I intend to write a networking application with a GUI frontend, presumably using GTK.
I'm completely new to GTK (and GUI programming in general). My current guess would be to use two threads, one that handles networking and the other one running the GTK frontend.
Is this the common design pattern for this kind of problem or are there better alternatives, e.g. handling networking from within the GTK main loop?
If I have to resort to using two threads, what's the best way to tell the GTK thread that there's data available from the networking thread?
First thing to read up on in GUI programming is the Model View Controller pattern.  You want to separate the data flow from the GUI as much as possible.  The networking code updates the data model.  When the data model has changed, it signals the front end so the GUI can redraw.
GTK networking app: need design pattern