Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: xinyiman - Febbraio 27, 2020, 12:15:10 pm

Titolo: Errore durante la compilazione
Inserito da: xinyiman - Febbraio 27, 2020, 12:15:10 pm
Ciao ragazzi su un "Http Server Application" di lazarus devo far comunicare i vari processi multithread per scrivere nella stessa lista di messaggi.
Ma quando compilo mi ritorna.

unit1.pas(41,6) Error: Identifier not found "Synchronize"

Chi mi sa dire cosa sbaglio?
Titolo: Re:Errore durante la compilazione
Inserito da: Stilgar - Febbraio 29, 2020, 01:00:23 pm
Ciao.
il metodo che ti sta rompendo le scatole in compilazione mi sembra sia dei thread.
Nel thread viene verificato se il thd corrente è quello che sta provando ad effettuare l'operazione.
La critical section dentro il modulo di gestione richiesta mi sembra sia superflo. Vengono eseguiti all'interno di un thd di cui tu non hai visibilità.
Se vuoi essere sicuro che l'inserimento del messaggio sia "sincornizzato" e non ci siano più thrd che aggiungono nello stesso momento, metti enter/leave critical section dentro l'add message. Così sei "sicuro" che non più di un thrd entra nel pezzo di codice in questione.
Così come la stampa.
L'add message riceve un parametro, cosa che adesso non fa.

Entra nella sezione critica.Aggiunge il messaggio passato.Esce
Per la stampa stessa cosa.Entra nella sezione critica (la stessa dell'aggiornamento, così non hai stati inconsitenti)Stampa
Esce.
IN questo modo hai sincornizzato i 2 metodi (Produttore / Consumatore).
Per tornare alla tua domanda, stai usando un medoto che non è di (TCustomHTTPModule<-TSessionHTTPModule<-TCustomFPWebModule<-TFPWebModule<-)TFPWebModule1

Stilgar
Titolo: Re:Errore durante la compilazione
Inserito da: xinyiman - Marzo 02, 2020, 08:07:40 am
Ciao Stilgar, in effetti funziona. Grazie mille