Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026
Sono molte le novità che ASUS ha scelto di presentare al CES 2026 di Las Vegas, partendo da una gamma di soluzioni NUC con varie opzioni di processore passando sino agli schermi gaming con tecnologia OLED. Il tutto senza dimenticare le periferiche di input della gamma ROG e le soluzioni legate alla connettività domestica
Le novità ASUS per il 2026 nel settore dei PC desktop
Le novità ASUS per il 2026 nel settore dei PC desktop
Molte le novità anticipate da ASUS per il 2026 al CES di Las Vegas: da schede madri per processori AMD Ryzen top di gamma a chassis e ventole, passando per i kit di raffreddamento all in one integrati sino a una nuova scheda video GeForce RTX 5090. In sottofondo il tema dell'intelligenza artificiale con una workstation molto potente per installazioni non in datacenter
Le novità MSI del 2026 per i videogiocatori
Le novità MSI del 2026 per i videogiocatori
Con le nuove soluzioni della serie MEG, acronimo di MSI Enthusiast Gaming, l'azienda taiwanese vuole proporre per il 2026 una gamma di proposte desktop che si rivolgono direttamente all'utente più appassionato con schede madri, chassis e sistemi di raffreddamento. Non da ultimi troviamo anche gli alimentatori, che abbinano potenza a ricerca della massima sicurezza di funzionamento.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-08-2011, 13:49   #21
!fazz
Moderatore
 
L'Avatar di !fazz
 
Iscritto dal: Nov 2006
Messaggi: 21919
Quote:
Originariamente inviato da misterx Guarda i messaggi
ciao,
siccome ho scritto un programma che in definitiva è un campionatore, mi chiedevo se il teorema del campionamento è usabile anche nel mio caso.

Ho un thread che scansiona le porte di un apparato collegato via ethernet e riempe un array di 1024 byte.

Un secondo thread verifica se qualcuno dei suoi bit ha cambiato di stato: mi interessano i singoli bit, se a zero oppure ad uno.

Un terzo thread resta in attesa del secondo e se c'è qualcosa da scrivere su disco viene risvegliato.

Ho notato che i tempi di esecuzione tra i vari thread in windows XP sono dell'ordine di 1/3 millisecondi e quindi del tutto trascurabili per i miei scopi.

La domanda: se il dispositivo più veloce cambia il suo stato ogni 500 millisecondi ed io eseguo il primo thread ogni 250 millisecondi è garantito che riesco a catturare in modo preciso lo stato di tutti i bit dell'apparato?

E' un dubbio un pò forse banalotto ma non avendo esperienza vi chiedo conferme soprattutto in quanto ho verificato che lo scheduler di windows XP è veramente NON deterministico.

grazie 1000
nessun programma su xp ti assicurerà quello che chiedi in quanto il s.o. non è realtime
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX)
Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000
!fazz è offline   Rispondi citando il messaggio o parte di esso
Old 01-08-2011, 13:51   #22
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
Quote:
Originariamente inviato da starfred Guarda i messaggi
La parola sempre è un po' azzardata. Come si può intendere sempre?
1 minuto? 1 ora? 1 giorno? E' troppo relativo. Questo tipo di programmazione deve essere corretto dal punto di vista teorico.
Bisogna sempre ricondursi al worst case (che prima o poi si verificherà) e gestire il sistema di conseguenza.
Prova ad immaginare un sistema con 3 thread che eseguono questa operazione per 1000 volte:
TH1: Sleep(10); signal(TH2); wait();
TH2: Sleep(10); signal(TH3); wait();
TH3: Sleep(10); signal(TH1); wait();

Segnati l'orario di inizio e fine rimarrai molto sorpreso dal risultato

purtoppo non ho esperienza in programmazione di questo tipo
Ma come faccio a questo punto a capire se il tempo che leggo è quello di variazione del bit oppure dei vari sleep?
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 01-08-2011, 14:04   #23
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
grossolanamente il codice è questo

Codice:
byte buf[1024];
//TH1
while(1)
{
      WaitForSingleObject(hMutex,INFINITE);

      RiempiArray(buf);

      ReleaseMutex(hMutex);

     Sleep(250);
}
Codice:
//TH2
while(1)
{
      WaitForSingleObject(hMutex,INFINITE);
      
      for(int i=0; i<1024; i++)
      {
             if(bit cambia stato)
             calcola_tempo();

             SetEvent ( hEvent2 );

      }
      ReleaseMutex(hMutex);

     Sleep(50);
}
Codice:
//TH3
while(1)
{
            WaitForSingleObject(hEvent2 ,INFINITE);
      
             Salva_Tempo();

             ResetEvent( hEvent2 );


}
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 01-08-2011, 14:34   #24
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
Quote:
Originariamente inviato da !fazz Guarda i messaggi
nessun programma su xp ti assicurerà quello che chiedi in quanto il s.o. non è realtime
ma non si riescono nemmeno a quantificare i ritardi introdotti da xp ?
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 01-08-2011, 14:36   #25
starfred
Senior Member
 
Iscritto dal: Jul 2011
Messaggi: 381
Mi spiace ma non conosco il funzionamento di quelle funzioni quindi non ti saprei dire cose corrette; come mai hai scelto di utilizzare le MSDN Library?

Non puoi quantificare i ritardi per una valanga di motivi tra cui: non conosci il numero di processi, non conosci i tempi dei singoli processi, non conosci le deadline dei processi, non conosci lo scheduler, non conosci la priorità dei processi... etc. etc.
__________________
Concluso positivamente con: Kamzata, Ducati82, Arus, TheLastRemnant, ghost driver, alexbull1, DanieleRC5, XatiX

Ultima modifica di starfred : 01-08-2011 alle 14:38. Motivo: quantificare ritardi
starfred è offline   Rispondi citando il messaggio o parte di esso
Old 01-08-2011, 15:15   #26
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
Quote:
Originariamente inviato da starfred Guarda i messaggi
Mi spiace ma non conosco il funzionamento di quelle funzioni quindi non ti saprei dire cose corrette; come mai hai scelto di utilizzare le MSDN Library?

Non puoi quantificare i ritardi per una valanga di motivi tra cui: non conosci il numero di processi, non conosci i tempi dei singoli processi, non conosci le deadline dei processi, non conosci lo scheduler, non conosci la priorità dei processi... etc. etc.
ok, grazie 1000 a tutti

Sto facendo alcune prove e noto ritardi di al massimo 15 millisecondi tra una lettura l'altra.
I dati reali mi sono stati forniti dal costruttore del dispositivo e dove viene dichiarato 1 secondo io leggo a volte 1,015 = 1015 ms
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 01-08-2011, 15:17   #27
!fazz
Moderatore
 
L'Avatar di !fazz
 
Iscritto dal: Nov 2006
Messaggi: 21919
Quote:
Originariamente inviato da misterx Guarda i messaggi
ma non si riescono nemmeno a quantificare i ritardi introdotti da xp ?
spannometricamente oltre 1s di tempo ciclo l'influenza del sistema operativo diventa trascurabile
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX)
Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000
!fazz è offline   Rispondi citando il messaggio o parte di esso
Old 01-08-2011, 15:23   #28
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
Quote:
Originariamente inviato da !fazz Guarda i messaggi
spannometricamente oltre 1s di tempo ciclo l'influenza del sistema operativo diventa trascurabile
forse anche 0.5 s ???

Ho notato una certa ripetibilità dopo centinaia di migliaia di misurazioni vie ethernet dove il massimo ritardo che ho registrato sono 15 ms che guarda caso sembrano proprio quelli che inserisco io come pausa tra i thread.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 01-08-2011, 15:40   #29
starfred
Senior Member
 
Iscritto dal: Jul 2011
Messaggi: 381
Prova a stressare di tanto la macchina e poi effettua il test. Che tempi ci sono?
__________________
Concluso positivamente con: Kamzata, Ducati82, Arus, TheLastRemnant, ghost driver, alexbull1, DanieleRC5, XatiX
starfred è offline   Rispondi citando il messaggio o parte di esso
Old 01-08-2011, 15:43   #30
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Quote:
Originariamente inviato da misterx Guarda i messaggi
nella mia situazione ho un thread che legge dati da ethernet e riempie un array di 1024 byte ogni tot millisecondi, questo perchè io non posso sapere quando cambia lo stato dei bit dell'apparato; questo è un compito che spetta al mio programma come spetta anche calcolare per quanto tempo è rimasto a zero oppure a uno ognuno dei suoi bit.
Ma l'apparato manda lui i dati ogni tot millisecondi oppure sei tu che ogni tot fai uan richiesta sulla rete e ottieni risposta ?
Quote:
Siccome non so ogni quanto cambiano di stato i tali bit, ecco l'esigenza di uno sleep che liberasse la CPU per altri programmi, altrimenti avrei un uso della CPU pari al 100%
In ogni caso se il problema e' quello dell'occupazione della cpu, avrebbe molto piu' senso che il secondo thread rimanga in attesa e venga risvegliato solo quando almeno uno dei 1024 byte viene cambiato (il confronto non dovrebbe occupare molto tempo).
Tieni inoltre presente che se tu fai una sleep di 500 ms, l'esecuzione non avviene ogni mezzo secondo, perche' ci devi aggiungere anche il tempo di esecuzione tra una sleep e l'altra. Dovresti schedulare una sleep di (500 - tempo appena consumato) (oppure una schedulazione ricorrente, se il sistema operativo lo supporta).
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 01-08-2011, 15:43   #31
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
Quote:
Originariamente inviato da starfred Guarda i messaggi
Prova a stressare di tanto la macchina e poi effettua il test. Che tempi ci sono?
provo a lanciare 5 processi uguali
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 01-08-2011, 15:49   #32
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Quote:
Originariamente inviato da misterx Guarda i messaggi
La domanda: se il dispositivo più veloce cambia il suo stato ogni 500 millisecondi ed io eseguo il primo thread ogni 250 millisecondi è garantito che riesco a catturare in modo preciso lo stato di tutti i bit dell'apparato?
Si', ma te ne accorgi con un ritardo che puo' anche arrivare a 250 ms (perche' se e' cambiato giusto appena dopo che eri entrato nella sleep.)


Quote:
E' un dubbio un pò forse banalotto ma non avendo esperienza vi chiedo conferme soprattutto in quanto ho verificato che lo scheduler di windows XP è veramente NON deterministico.
Tieni presente il discorso che ho fatto sopra sulla durata della sleep. Per come l'hai impostato, il tuo ciclo non ha durata 250 ms, ma 250+X con X il tempo di esecuzione del codice del loop. La cosa peggiora ancora di piu' se per qualche motivo il ciclo viene messo in pausa per qualche motivo nel mezzo della sua esecuzione.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 01-08-2011, 15:49   #33
starfred
Senior Member
 
Iscritto dal: Jul 2011
Messaggi: 381
Io intendo una situazione di sovraccarico; hai presente quando il mouse si muove a scatti?
Prova a fare il test mentre usi un programma di stress pesante della cpu e I/O
__________________
Concluso positivamente con: Kamzata, Ducati82, Arus, TheLastRemnant, ghost driver, alexbull1, DanieleRC5, XatiX
starfred è offline   Rispondi citando il messaggio o parte di esso
Old 01-08-2011, 15:54   #34
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
una volta che si è assestato il programma in quanto allo start i tempi sono randomici, il ritardo che leggo è +/- 16 millisecondi
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 01-08-2011, 16:00   #35
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
Quote:
Originariamente inviato da marco.r Guarda i messaggi
Ma l'apparato manda lui i dati ogni tot millisecondi oppure sei tu che ogni tot fai uan richiesta sulla rete e ottieni risposta ?

In ogni caso se il problema e' quello dell'occupazione della cpu, avrebbe molto piu' senso che il secondo thread rimanga in attesa e venga risvegliato solo quando almeno uno dei 1024 byte viene cambiato (il confronto non dovrebbe occupare molto tempo).
Tieni inoltre presente che se tu fai una sleep di 500 ms, l'esecuzione non avviene ogni mezzo secondo, perche' ci devi aggiungere anche il tempo di esecuzione tra una sleep e l'altra. Dovresti schedulare una sleep di (500 - tempo appena consumato) (oppure una schedulazione ricorrente, se il sistema operativo lo supporta).

sono io che impongo il tempo di lettura per non sovraccaricare la CPU.

Ho provato anche ad implementare due CreateEvent() in modo che il TH1 risvegliasse TH2 quando questo ha finito di leggere da ethernet ma nulla vieta poi a TH1 se non metto un semaforo, di fare una nuova lettura da ethernet rendendo i dati nel buffer analizzato in quel momento da TH2 inconsistenti.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 01-08-2011, 16:00   #36
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
Quote:
Originariamente inviato da starfred Guarda i messaggi
Io intendo una situazione di sovraccarico; hai presente quando il mouse si muove a scatti?
Prova a fare il test mentre usi un programma di stress pesante della cpu e I/O
lancio un rendering
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 01-08-2011, 16:04   #37
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Quote:
Originariamente inviato da misterx Guarda i messaggi
sono io che impongo il tempo di lettura per non sovraccaricare la CPU.

Ho provato anche ad implementare due CreateEvent() in modo che il TH1 risvegliasse TH2 quando questo ha finito di leggere da ethernet ma nulla vieta poi a TH1 se non metto un semaforo, di fare una nuova lettura da ethernet rendendo i dati nel buffer analizzato in quel momento da TH2 inconsistenti.
Intendevo dire, visto che gia' usi un mutex per regolare l'accesso, potresti fare si' che sia il primo thread a fare il confronto e rilasci il mutex solo se e' cambiato qualcosa
a questo punto il secondo thread viene eseguito solo quando serve.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 01-08-2011, 16:07   #38
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da misterx Guarda i messaggi
sono io che impongo il tempo di lettura per non sovraccaricare la CPU.

Ho provato anche ad implementare due CreateEvent() in modo che il TH1 risvegliasse TH2 quando questo ha finito di leggere da ethernet ma nulla vieta poi a TH1 se non metto un semaforo, di fare una nuova lettura da ethernet rendendo i dati nel buffer analizzato in quel momento da TH2 inconsistenti.
E fagli scrivere da un'altra parte...
Tieni una coda di serie di letture.
Il thread che legge accoda una serie nuova e un riferimento utile per capire quando la lettura e' avvenuta, un semplice sequenziale. Quando e' 42, singifichera' che la serie si riferisce al 42*512ms = 21 secondi dalla partenza, (fatti salve le inaccuratezze di schedulazione fin qui esposte)
Il thread che processa i dati scoda e analizza, con molta calma, quando piu' gli fa comodo.
In questo modo non hai neppure bisogno di mutex se non per accodare-scodare, cosa comunque molto light e gia' anche implementata gratis se usi una System.Collections.Concurrent.ConcorrentQueue<T>
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.

Ultima modifica di gugoXX : 01-08-2011 alle 16:10.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 01-08-2011, 16:08   #39
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
Quote:
Originariamente inviato da marco.r Guarda i messaggi
Intendevo dire, visto che gia' usi un mutex per regolare l'accesso, potresti fare si' che sia il primo thread a fare il confronto e rilasci il mutex solo se e' cambiato qualcosa
a questo punto il secondo thread viene eseguito solo quando serve.
ma il primo riempie un buffer e non può sapere a priori se è cambiato qualcosa. Solo il secondo se ne accorge ed in questo caso se è cambiato qualcosa è il secondo che risveglia il terzo attraverso un evento in modo che scriva su disco il tempo calcolato.

Tra primo e secondo cè un semaforo per evitare inconsistenza di dati nel buffer e tra il secondo ed il terzo un evento che sempre il terzo, una volta sodisfatto resetta.

Ultima modifica di misterx : 01-08-2011 alle 16:13.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 01-08-2011, 16:13   #40
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3739
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
E fagli scrivere da un'altra parte...
Tieni una coda di serie di letture.
Il tread che legge accoda una serie nuova e un riferimento utile per capire quando la lettura e' avvenuta, un semplice sequenziale. Quando e' 42, singifichera' che la serie si riferisce al 42*512ms = 21 secondi dalla partenza, (fatti salve le inaccuratezze di schedulazione fin qui esposte)
Il thread che processa i dati scoda e analizza, con molta calma, quando piu' gli fa comodo.
ma per come è costruita la funzione di lettura, io passo un puntatore ad un buffer e questa lo riempie ed ogni volta il ciclo si ripete allo stesso modo ogni tot millisecondi da me imposti.

Non mi viene in mente come accodare

ho allegato il simulatore che si basa sul medesimo principio: è per Borland Builder C++ ma facilemnet adattabile
Allegati
File Type: zip Unit1.zip (1.9 KB, 1 visite)

Ultima modifica di misterx : 01-08-2011 alle 16:20.
misterx è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
Le novità ASUS per il 2026 nel settore dei PC desktop Le novità ASUS per il 2026 nel settore de...
Le novità MSI del 2026 per i videogiocatori Le novità MSI del 2026 per i videogiocato...
I nuovi schermi QD-OLED di quinta generazione di MSI, per i gamers I nuovi schermi QD-OLED di quinta generazione di...
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
AMD Ryzen AI Halo: la risposta di AMD al...
Energy e smart mobility: al CES le start...
Samsung ci riprova dopo S25 Edge: un nuo...
LEGO trasforma i mattoncini in computer:...
Il nuovo entry-level della gamma MacBook...
ECOVACS DEEBOT T50 PRO OMNI Gen2 a soli ...
Fluidità senza compromessi: OPPO mostra ...
Roborock Qrevo Edge S5A scende al prezzo...
Anche Samsung seguirà il trend: i Galaxy...
CES 2026: Lenovo punta sull’IA ambiental...
Smart city e smart land: al CES l’innova...
Grazie ai dati di Hubble abbiamo pi&ugra...
E' la GPU la grande novità delle ...
Ryzen AI 400 Series e nuovi modelli Ryze...
I notebook ASUS per il 2026: Zenbook e E...
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: 09:37.


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