linux user group brescia

immagine del castello

Archivio della mailing list

Xlib error

Bauno bauno a inwind.it
Ven 21 Ott 2005 17:19:28 UTC
On Friday 21 October 2005 09:39, you wrote:

> c'e' il processo principale che esegue l'interfaccia costruita con le
> gtk1.2 e un processo figlio che esegue dei calcoli quando il processo padre
> scrive all'interno di una pipe. 

Usi una fork() invece di un thread?

> dopo aver eseguito i calcoli vengono 
> aggiornati alcuni widget dal processo padre, la funzione per aggiornare
> questi widget e' legata al segnale SIGUSR1 che viene mandato dal processo
> figlio con la funzione kill.

Non credo proprio che tu possa fare update asincroni in questo modo...la 
gestione dell'interfaccia grafica deve essere effettuata in modo sincrono 
all'interno del "main thread", altrimenti hai sicuramente problemi.  
Possibili soluzioni:
1) Prima di aggiornare l'interfaccia all'interno della routine di gestione del 
segnale, acquisisci un lock sulla routine di aggiornamento della GUI (brutto, 
ma si può fare, okkio che il thread che controlla la GUI controlla anche il 
dispatch dei messaggi...)
2) Invece di un segnale, invii un custrom message (i messaggi sono asincroni, 
ma il loro processing da parte del main thread è sincrono)

Ti consiglio di usare il 2).

> serve altro? se si' basta chiedere, dato che se sapevo quali informazioni
> potessero essere utili le avrei date subito o ci sarei arrivato da solo
> senza bisogno di chiedere.

Un conto è non sapere risolvere un problema (capita a tutti), un conto è non 
riuscire a scrivere 5 righe per delineare il problema (capita in genere solo 
ai pigri).

-- 
Bauno - Eurydices, oro, properata retexite fata!
"God is real, unless declared integer"




Maggiori informazioni sulla lista Lug