I wrote a C/S application using udp and it keeps giving me errors, which I believe has something to do with the way I use threads.
When the client program starts, it first initializes a login window and starts a new thread to listen to the response from the server. After it submits user name and password, the new thread will receive a message indicating whether it submitted the right info. If it did, then the thread would initializes the main GUI window. But it would give strange errors:
Fatal IO error 11 (Resource temporarily unavailable) on X server :0.0
or
python: Fatal IO error 0 (Success) on X server :0.0
I found a similar question here, but it’s not solved.
Some say GUI should only be manipulated in the main thread, but others say it’s not true.
I also tried using gdk_threads_enter() and gdk_threads_enter() around gtk_main() and the code where I initialize window in that listen thread. But it didn’t seem to work.
I don’t know much about threads so be patient when pointing out where I have done wrong.
Thanks.
These error messages, I have found, pop up from time to time when you are not holding the GTK lock properly.
You should put
gdk_threads_enter()andgdk_threads_leave()around the originalgtk_main()call, and also around every call to a GTK function that takes placegtk_main()This usage is on its way out though as I understand, and in future versions of GTK it will only be possible to manipulate GTK from the main thread.