Ho iniziato a programmare Java con swing per un paio d'anni e ho sempre accettato che le interazioni GUI dovessero avvenire sul thread di invio eventi. Recentemente ho iniziato a utilizzare GTK + per le applicazioni C e non sono stato sorpreso di scoprire che le interazioni GUI dovevano essere chiamate su gtk_main. Allo stesso modo, ho guardato SWT per vedere in che modo era diverso da Swing e per vedere se ne valeva la pena, e di nuovo ho trovato l'idea del thread UI, e sono sicuro che questi 3 non sono gli unici toolkit che usano questo modello. Mi stavo chiedendo se ci sia un motivo per questo design e quale sia la ragione per mantenere le modifiche dell'interfaccia utente isolate su un singolo thread. Posso capire perché alcune modifiche potrebbero causare problemi (come modificare un elenco mentre viene disegnato), ma non vedo perché queste preoccupazioni passino all'utente dell'API. C'è un limite imposto da un sistema operativo? C'è una buona ragione per cui queste preoccupazioni non sono "nascoste" (cioè qualche forma di sincronizzazione che è invisibile all'utente)? Esiste un modo (anche puramente concettuale) di creare una libreria grafica thread-safe o è davvero impossibile?
Ho trovato questo link che sembra descrivere GTK in modo diverso da come capito (anche se la mia comprensione era la stessa di molte persone) Come si differenzia da altri toolkit? È possibile implementarlo in Swing (poiché il modello EDT non impedisce effettivamente l'accesso da altri thread, spesso porta a Eccezioni)