Have you read the documentation on thread usage in GTK+. See https://developer.gnome.org/gdk3/stable/gdk3-Threads.html
You will need to initialise the global GDK lock and calls to GTK/GDK in the non main threads must lock the global GDK lock although this method is now deprecated since GTK+ 3.6. This method would also have the effect of slowing down the system as a global mutex lock has to be maintain, with constant locking and unlocking. It would be better to have worker threads that communicate to the main thread that does all the calls to GTK/GDK, with the worker threads telling the main thread what needs to be done.
Note that calling GTK/GDK functions from different threads is not portable to Microsoft Windows.
gtk_init() should only be called once on application initialisation.