Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea
Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea
L'euro digitale è una valuta fiat che entrerà in vigore nei prossimi anni. L'obiettivo principale è quello di ridurre la dipendenza dalle piattaforme di pagamento digitali statunitensi e offrire ai cittadini un modo semplice per trasferire denaro. Anche offline, anche in maniera (pseudo)anonima
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere?
HONOR Magic V6 è arrivato in Italia a 2.299,90 euro con una promessa precisa: unire 4 mm di spessore da aperto (8,75 mm chiuso nel modello White, 9 mm negli altri colori) a una batteria da 6.660 mAh, la più capiente mai vista su un pieghevole. Lo abbiamo usato per oltre una settimana in versione Red 16/512 GB per capire se lo Snapdragon 8 Elite Gen 5 tiene testa alla concorrenza anche fuori dai benchmark ufficiali
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni
Redmi Pad 2 9.7 punta su un display ampio e fluido, una batteria capace di accompagnare l'uso quotidiano senza ansie da ricarica e un prezzo accessibile, a partire da 179,90 euro per la versione con 64 GB di storage. Lo Snapdragon 6s 4G Gen 2 e i 4 GB di RAM della configurazione più diffusa frenano però chi cerca reattività e multitasking spinto: ecco il bilancio dopo due settimane di prova diretta
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 21-01-2011, 10:56   #1
kwb
Senior Member
 
L'Avatar di kwb
 
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
[C] Controllo esecuzione con tempo

Ciao a tutti.
Sto facendo un programma dove, preso in input un tempo ( in secondi ) questo esegue il programma finchè o non è scaduto il tempo o le operazioni sono terminate.
Detto questo, il programma esegue delle modifiche su una matrice ed è tutto automatizzato, è quindi chiaro che qualunque tempo inserito sarà certamente maggiore di quello impiegato dal programma a completare le operazioni ( ci mette, a stima, meno di un secondo ).
Il mio problema è che non so come 'slegare' le funzioni che operano sulla matrice dal tempo.
Fino ad ora, quello che sono riuscito a fare è far eseguire un'operazione al secondo, ma non è quello che voglio...
Detto questo, non ho la più pallida idea di come operare per slegare le due cose, anche perchè inizio a sospettare che non sia possibile. Inoltre, non avendo mai avuto a che fare con le librerie del tempo, non so nemmeno dove andare a mettere bene le mani, immagino comunque si debba usare la funzione clock().

EDIT: Aggiungo che ho la necessità che il codice scritto, le librerie utilizzate e quant'altro, siano indipendenti dal sistema.
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505

Ultima modifica di kwb : 21-01-2011 alle 10:58.
kwb è offline   Rispondi citando il messaggio o parte di esso
Old 21-01-2011, 14:08   #2
:.Blizzard.:
Senior Member
 
L'Avatar di :.Blizzard.:
 
Iscritto dal: Jan 2006
Città: Perugia - San Benedetto del Tronto
Messaggi: 348
Una curiosità, ma il discorso del tempo ha un suo perché oppure ti serve a te per valutare l'efficienza del programma?

Cmq non mi è molto chiaro quello che devi fare
:.Blizzard.: è offline   Rispondi citando il messaggio o parte di esso
Old 21-01-2011, 14:18   #3
Supdario
Member
 
Iscritto dal: Mar 2008
Messaggi: 267
Hai 2 modi per farlo, uno è abbastanza semplice ma potrebbe rallentarti il programma, invece l'altro è migliore ma richiede l'uso dei thread.

1) Metti un controllo all'interno dell'algoritmo, che controlla ad ogni esecuzione del ciclo (o quel che è) il tempo, e se è cambiato, esce.
2) Usi un thread per il tuo algoritmo e metti un'attesa nel thread principale. Dopo quell'attesa metti un'istruzione per killare il thread secondario ed ecco fatto.
Supdario è offline   Rispondi citando il messaggio o parte di esso
Old 21-01-2011, 14:49   #4
kwb
Senior Member
 
L'Avatar di kwb
 
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
Quote:
Originariamente inviato da :.Blizzard.: Guarda i messaggi
Una curiosità, ma il discorso del tempo ha un suo perché oppure ti serve a te per valutare l'efficienza del programma?

Cmq non mi è molto chiaro quello che devi fare
Ti spiego... Il lavoro che ci è stato dato da fare richiede che vengano effettuate delle operazioni varie ( non mi sto a dilungare su cosa c'è da fare perchè non serve ) su una matrice.
Tuttavia questo può essere fatto in due modi: o è l'utente a dire cosa fare tramite input diretto delle coordinate di una cella della matrice, oppure deve pensarci il programma ( e quindi si deve ideare un algoritmo in base di scegliere quale operazione eseguire e come ).
Siccome non diventava agevole dare delle specifiche troppo diverse a chi sceglieva di operare tramite input sulla matrice e chi sceglieva di fare un algoritmo che operasse, ad entrambi è stato imposto che il programma termini dopo x secondi oppure se non si possono più eseguire operazioni sulla matrice.
È chiaro che se è l'algoritmo a operare direttamente, ci va meno di 1 secondo per concludere le operazioni, quindi l'aggiunta del tempo è superflua...
Ho fatto notare al professore questa particolarità e mi ha detto che voleva comunque eseguissimo l'implementazione del controllo del tempo in ogni caso.

In conclusione, effettivamente per come ho strutturato io ( e molti altri ) il programma, non ha un suo senso l'aggiunta del tempo, però queste sono le richieste


Quote:
Originariamente inviato da Supdario Guarda i messaggi
Hai 2 modi per farlo, uno è abbastanza semplice ma potrebbe rallentarti il programma, invece l'altro è migliore ma richiede l'uso dei thread.

1) Metti un controllo all'interno dell'algoritmo, che controlla ad ogni esecuzione del ciclo (o quel che è) il tempo, e se è cambiato, esce.
2) Usi un thread per il tuo algoritmo e metti un'attesa nel thread principale. Dopo quell'attesa metti un'istruzione per killare il thread secondario ed ecco fatto.
1. Perchè dovrebbe uscire se il tempo è cambiato?!?
2. Hmm... Sarebbe bello provare, è tanto difficile? Da dove devo partire?
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
kwb è offline   Rispondi citando il messaggio o parte di esso
Old 21-01-2011, 15:35   #5
kwb
Senior Member
 
L'Avatar di kwb
 
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
2. Mi stavo giusto chiedendo perchè sui miei manuali non ci fosse menzione dei thread.
Ho appena scoperto che sono sistemi dipendenti, e che i sistemi *nix usano una libreria, quelli windows un'altra ecc...
È vero? Ho letto bene? Se si, non ne posso fare uso...
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
kwb è offline   Rispondi citando il messaggio o parte di esso
Old 21-01-2011, 16:19   #6
Supdario
Member
 
Iscritto dal: Mar 2008
Messaggi: 267
Ah... Non avevo letto quel punto. Effettivamente, salvo alcuni linguaggi interpretati (ad esempio il Java), l'implementazione dei thread è dipendente dalla piattaforma.

A questo punto ti tocca usare la prima opzione, cioè mettere dei controlli in punti strategici all'interno dell'algoritmo.
Il C ti fornisce, all'interno della libreria "time.h", alcune funzioni per la gestione del tempo, tra cui il clock (con cui ottieni la massima precisione).
Piccolo esempio: vuoi avviare un ciclo ed uscire dal ciclo dopo che sono passati 1.5 secondi:

Codice:
double tempo = 1.5;
clock_t tempo_fine = clock() + tempo*CLOCKS_PER_SEC;
while (clock() < tempo_fine)
{
    //Esegui la roba
}
La funzione per ottenere il clock corrente è "clock()". Hai a disposizione anche la costante CLOCKS_PER_SEC, che indica quanti clocks ci sono in un secondo.
Supdario è offline   Rispondi citando il messaggio o parte di esso
Old 21-01-2011, 18:20   #7
kwb
Senior Member
 
L'Avatar di kwb
 
Iscritto dal: Jul 2003
Città: Alessandria
Messaggi: 10167
Alla fine ho risolto facendo così:
Prendo in input il tempo, lo converto in intero con atoi() poi lo moltiplico per CLOCK_PER_SEC così trovo i clock e poi comparo questo numero con il risultato della funzione clock, se maggiore, fermo tutto!
__________________
Dell XPS 13 (9350) :: i5-2500K - HD6870 - AsRock Z68 Pro3 - Corsair Vengeance 8GB (4x2) DDR3 :: Samsung Galaxy S4 GT-i9505
kwb è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Oltre il contante e le crypto: tutto sull'Euro Digitale e la nuova sovranità monetaria europea Oltre il contante e le crypto: tutto sull'Euro D...
Recensione HONOR Magic V6: spessore record e super batteria. È lui il fold da battere? Recensione HONOR Magic V6: spessore record e sup...
Redmi Pad 2 9.7: ampio display, economico e peso contenuto, ma qualche limite nelle prestazioni Redmi Pad 2 9.7: ampio display, economico e peso...
Peugeot Polygon Concept: ecco il futuro delle utilitarie Peugeot Polygon Concept: ecco il futuro delle ut...
Reno16 Pro: il compatto di OPPO punta su fotocamera da 200MP e il nuovo Bubble! La recensione Reno16 Pro: il compatto di OPPO punta su fotocam...
Apple rilascia le beta pubbliche di iOS ...
Firefox cambia passo: update ogni due se...
Vent'anni di autopsie in un clic: nasce ...
Euro digitale, la BCE accelera: 36 partn...
Cowork, ChatGPT Work e ora Sand: Cursor ...
WhatsApp testa un cloud tutto suo per i ...
Un tassello dell'origine della vita scop...
Galaxy S26 Ultra, macchie rosse sul disp...
HUAWEI FreeClip 2S: miglior qualit&agrav...
Bun, IA ovunque e riscrittura in Rust: i...
Una startup cinese va oltre i nanometri,...
CORSAIR Platform:4 e Platform:4 Elevate,...
UnipolMove diventa più caro: scat...
Il CEO di Palantir: l'intelligenza artif...
CXMT come un treno: quasi raggiunta la c...
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: 14:31.


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