Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: pere - 02.10.16 - klo:09.53
-
Osaako joku kertoa miten spinner pitäisi toteutta että oikeasti toimisi?
Olen nyt tehnyt sen näin mutta ei toimi halutulla tavalla.
spinnerin luonti temput on muualla.
functio(jotain)
{
gtk_spinner_start (GTK_SPINNER (spinner));
muita toimintoja ......
gtk_spinner_stop (GTK_SPINNER (spinner));
}
tuosta jos jättää pois spinner stop rivin niin spinner jää pyörimään
mutta alkaa vasta sitten kun funtiosta on jo palattu.
kun tarkoitus olisi että spinner pyörii sen ajan kun tuo functio on ajossa.
niin ja ohjelma on c koodia
-
GTK+:n käyttöliittymän päivitys ja laskenta tapahtuu sinulla nyt samassa säikeessä, jolloin käyttöliittymä pysähtyy laskennan ajaksi. Työtä pitäisi joko ajaa erillisessä säikeessä tai vaihtoehtoisesti laskentasilmukassa pitäisi kutsua ajoittain gtk_main_iteration() -funktiota, jos käsittelemättömiä eventtejä on jonossa: https://developer.gnome.org/gtk3/stable/gtk3-General.html#gtk-events-pending
Säikeistys on aina hieman hankalaa ja vaatii jonkin verran yleistä perehtymistä rinnakkaisen suorituksen ongelmiin ja ratkaisuihin. En nyt heti löytänyt GTK-spesifejä C:llä kirjoitettuja yksinkertaisia esimerkkejä, mutta tässä relevanttia keskustelua aiheesta: http://stackoverflow.com/questions/30607429/gtk3-and-multithreading-replacing-deprecated-functions
-
Kiitos vastauksesta!
tämä tuntuu riittävän minun tapauksessani.
while(gtk_events_pending()) gtk_main_iteration();
ei tarvita vielä säikeistystä.