ho bisogno di creare un thread in Delphi con le seguenti caratteristiche:Delphi thread che attende i dati, elabora, per poi riprendere in attesa
- attende che il thread principale aggiunge i dati a una coda condivisa.
- Elabora tutti i dati nella coda, restituendo i risultati al thread principale (per quest'ultima parte semplicemente invierò messaggi alla finestra principale). L'elaborazione richiede molto tempo, quindi è possibile aggiungere nuovi dati alla coda mentre il thread di lavoro elabora le voci precedenti.
- Riprende in attesa, utilizzando il minor numero possibile di cicli cpu.
Non riesco a inviare messaggi alla discussione, poiché non ha una maniglia di finestra.
Devo usare qualche variante di WaitForObject? Se sì, quale sarebbe l'attesa? In caso contrario, come posso mantenere il thread in attesa, quindi riattivarlo quando i nuovi dati scendono dalla coda?
Ho letto Multithreading - The Delphi Way, che non sembra rispondere alla mia domanda. Forse OmniThreadLibrary può fare quello che mi serve; Non posso dirlo perché c'è poca documentazione. Non ne so abbastanza dei thread in generale per capire se la libreria aiuterà qui e come usarla (o anche perché usarla invece di lavorare solo con i discendenti di TThread).
Lei scrive: "Ho letto Multithreading - La Via Delphi, che non sembra rispondere alla mia domanda." ma lo fa nel capitolo 9. La relazione produttore-consumatore è ciò che stai cercando, ei semafori sono davvero un modo per implementare tali code. – mghie