Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione OPPO Find X9 Ultra: è lui il cameraphone definitivo
Recensione OPPO Find X9 Ultra: è lui il cameraphone definitivo
Find X9 Ultra è lo smartphone che tanti aspettavano, e finalmente è arrivato anche in Italia. Abbiamo provato il flagship di OPPO per diverse settimane, e siamo volati fino in Cina alla sua presentazione ufficiale. Tutto gira intorno al suo incredibile comparto fotografico in collaborazione con Hasselblad e con un totale di sei fotocamere. Il resto è un mix di specifiche di altissimo livello, così come il prezzo. Vi raccontiamo tutto nella nostra recensione completa.
Ecovacs Deebot X12 OmniCyclone: lava grazie a FocusJet
Ecovacs Deebot X12 OmniCyclone: lava grazie a FocusJet
Il nuovo Deebot X12 OmniCyclone abbina un sistema di raccolta dello sporco senza sacchetto, un rullo di lavaggio esteso e la tecnologia FocusJet per intervenire più efficacemente sulle macchie più persistenti. Un robot completo e preciso che aiuta a tenere puliti i pavimenti di casa con il minimo sforzo
Narwal Flow 2: la pulizia di casa con un mocio a nastro
Narwal Flow 2: la pulizia di casa con un mocio a nastro
Narwal Flow 2 implementa un mocio a nastro che esegue una pulizia dettagliata del pavimento di casa, in abbinamento ad un potente motore di aspirazione della polvere: un prodotto ideale per gestire in autonomia e con grande efficacia le necessità di pulizia dei pavimenti di casa
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-04-2011, 18:30   #1
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
[C/C++] uscire da un ciclo infinito

solitamente quando imposto un ciclo infinito del tipo

while(1)
{

}

setto in ambiente Borland Builder

bool bAbort = false;

while(1)
{
Application->ProcessMessage();
if(bAbort == true) break;
}

chi mette a true la variabile bAbort è un Button ma lo svantaggio di questa tecnica è che sottrae molte risorse in termini di CPU. So che vi sono metodi molto più precisi per fermare un loop del tipo esposto ma non ne conosco l'implementazione

grazie
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 13-04-2011, 22:33   #2
Torav
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 558
Innanzitutto metti while(!bAbort) oppure while(bAbort == false) perché quel while(1) e poi il break non si può vedere
Non sono un grande esperto di GUI ma per fare una cosa del genere, che io sappia, solitamente si usano più thread e quello che gestisce quel ciclo ha uno sleep di qualche millisecondo in modo che quel tempo macchina possa essere dedicato ad altri thread.
Torav è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2011, 08:50   #3
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12966
In genere le GUI hanno un loro thread per gestire gli eventi, e a questi eventi possono essere associate alcune funzioni che fanno da callback.

Ora non so precisamente cosa devi fare, comunque se devi fare un semplice polling è corretto come dice Torav, ti basta mettere una sleep all'interno del ciclo.

Codice:
while(!bAbort)
{
    // fai quello che devi fare
    sleep(10); // dorme 10ms.
}
Ovviamente il periodo del polling dipende da quello che devi fare, e da quanto rapidamente vuoi gestire gli eventi.

Credo che 10-20ms siano un tempo accettabile per l'utente che preme il tasto e vuole immediatamente vedere effettuata un'azione.
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2011, 11:07   #4
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3741
Quote:
Originariamente inviato da WarDuck Guarda i messaggi
In genere le GUI hanno un loro thread per gestire gli eventi, e a questi eventi possono essere associate alcune funzioni che fanno da callback.

Ora non so precisamente cosa devi fare, comunque se devi fare un semplice polling è corretto come dice Torav, ti basta mettere una sleep all'interno del ciclo.

Codice:
while(!bAbort)
{
    // fai quello che devi fare
    sleep(10); // dorme 10ms.
}
Ovviamente il periodo del polling dipende da quello che devi fare, e da quanto rapidamente vuoi gestire gli eventi.

Credo che 10-20ms siano un tempo accettabile per l'utente che preme il tasto e vuole immediatamente vedere effettuata un'azione.

grazie a entrambi.

Difatti avendo in esecuzione due thread che ciclano all'infinito, il pulsante che rende bAbort=true; viene interrogato anche senza usare la chiamata a Application->ProcessMessage()
misterx è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione OPPO Find X9 Ultra: è lui il cameraphone definitivo Recensione OPPO Find X9 Ultra: è lui il c...
Ecovacs Deebot X12 OmniCyclone: lava grazie a FocusJet Ecovacs Deebot X12 OmniCyclone: lava grazie a Fo...
Narwal Flow 2: la pulizia di casa con un mocio a nastro Narwal Flow 2: la pulizia di casa con un mocio a...
Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless Tastiera gaming MSI GK600 TKL: switch hot-swap, ...
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici DJI Osmo Pocket 4: la gimbal camera tascabile cr...
Project Helix sarà prodotta anche...
La NASA pubblica alcuni aggiornamenti su...
Tute spaziali AxEMU per Artemis: Axiom S...
Nutanix Government Cloud Clusters arriva...
Troy Baker lavora a un progetto tutto su...
Motorola Edge 60 Neo è il compatt...
Stretto di Hormuz, finti funzionari iran...
Dragon Ball Xenoverse 3 annunciato uffic...
WINDTRE BUSINESS potenzia i servizi IoT ...
OPPO rinnova l'ecosistema: arrivano Watc...
OPPO Find X9 Ultra ufficiale: debutta il...
Renault Twingo: esposta a Milano per far...
Intel vuole cambiare: overclocking anche...
Anche PlayStation introduce la verifica ...
Samsung ed Sk hynix, i bonus per gli ope...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 18:57.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v