Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Xiaomi 14T Pro: con MediaTek si risparmia, ma la fotocamera resta Leica
Xiaomi 14T Pro: con MediaTek si risparmia, ma la fotocamera resta Leica
Xiaomi 14T Pro sfrutta lo stesso sensore Light Fusion 900 del fratello maggiore Xiaomi 14, anche se cambia un po' il resto del comparto fotografico. Con 200 euro in meno rappresenta comunque un cameraphone di primo livello, molto piacevole da utilizzare grazie ai profili colore e all'ottimizzazione Leica. Lo abbiamo provato in anteprima
Recensione Warhammer 40,000 Space Marine 2: epicità allo stato puro
Recensione Warhammer 40,000 Space Marine 2: epicità allo stato puro
Sequel dell'intramontabile action del 2011, Warhammer 40,000: Space Marine 2 celebra l'iconico universo grimdark di Games Workshop con un gioco esaltante, un ibrido tra action e third-person shooter ad alto tasso di testosterone che vi farà sentire degli autentici Adeptus Astartes.
Recensione Insta360 Link 2 e Link 2C: l'evoluzione della videoconferenza con l’AI
Recensione Insta360 Link 2 e Link 2C: l'evoluzione della videoconferenza con l’AI
Insta360 lancia due nuove webcam di alta gamma, Link 2 e Link 2C, evoluzione del modello precedente. Progettate per professionisti e content creator, offrono funzionalità avanzate testate in vari scenari d'uso durante diverse settimane di prova.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 23-12-2011, 12:09   #21
Mettiu_
Member
 
L'Avatar di Mettiu_
 
Iscritto dal: Jul 2011
Messaggi: 246
Quote:
Originariamente inviato da Eddie1985 Guarda i messaggi
Cosa mi consigliate? Quale è la dimensione opportuna da inviare secondo voi?
Discorso lungo...
Ogni send (almeno in linea di principio) diventa un pacchetto del flusso TCP o, nel caso la quantità di dati sia troppo grande per un singolo pacchetto, viene frammentata in N pacchetti che poi il ricevitore ricompone. Per massimizzare l'efficienza dovresti fare pacchetti più grande possibile in modo da minimizzare il numero di pacchetti e, di conseguenza, l'overhead dovuto agli header TCP, IP, ecc che devi aggiungere ad ogni pacchetto. D'altro canto, se fai pacchetti grandi, se se ne perde uno e TCP deve ritrasmetterlo, ritrasmetterà una quantità di dati maggiore. Insomma, è un compromesso: per grosse quantità di dati, io farei pacchetti grossi (non meno di 512-1024 byte alla volta)
Mettiu_ è offline   Rispondi citando il messaggio o parte di esso
Old 23-12-2011, 12:14   #22
Mettiu_
Member
 
L'Avatar di Mettiu_
 
Iscritto dal: Jul 2011
Messaggi: 246
Quote:
Originariamente inviato da starfred Guarda i messaggi
Io immagino che tu stia in un sistema multithread, nel quale ogni thread gestisce un socket descriptor, cioè che ogni thread gestisce una connessione con un client. Se qualche thread fa riferimento a variabili globali, come nel 99% dei casi avviene, allora devi implementare un meccanismo di mutua esclusione per tali variabili.

Spero di esser stato chiaro.
Ciao
Nel tuo esempio si bisogna stare attenti, ma è appunto un esempio di server scritto non proprio bene. Ogni thread può tranquillamente mallocarsi il suo buffer di ricezione senza rompere le scatole agli altri con variabili globali. L'onere di gestire dei semafori è abbastanza grande mentre di RAM ormai ce n'è a bizzeffe
Mettiu_ è offline   Rispondi citando il messaggio o parte di esso
Old 23-12-2011, 14:06   #23
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Quote:
Originariamente inviato da Eddie1985 Guarda i messaggi
Non è esattamente quello che ho fatto io?
Ma io continuo a non capire se le problematiche che cercavo di spiegare all'inizio del thread ci siano oppure no!
Dunque dopo che ho fatto le send dal lato client, i dati saranno o nelle variabili o comunque in un buffer, e prima o poi verranno presi dalla recv del lato server? Ma intanto il lato client, dopo aver eseguito le send, va avanti con il codice, e chi mi garantisce che le recv sul lato server siano già state effettuate????
Ok, ora ho capito meglio.
Tu non sai se e quando il server abbia fatto delle recv. Se la tua send ritorna con successo sai che in linea di massima i dati sono arrivati all'altro capo, ma potrebbero essere fermi in qualche buffer. Se vuoi avere qualche garanzia (tipo che il server ha finito di salvare i dati su disco) devi far si che il server risponda con qualche comando di conferma.
Di cosa vuoi aver conferma ?
__________________
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 23-12-2011, 15:46   #24
Eddie1985
Senior Member
 
Iscritto dal: Oct 2004
Messaggi: 304
Quote:
o immagino che tu stia in un sistema multithread, nel quale ogni thread gestisce un socket descriptor, cioè che ogni thread gestisce una connessione con un client. Se qualche thread fa riferimento a variabili globali, come nel 99% dei casi avviene, allora devi implementare un meccanismo di mutua esclusione per tali variabili.

mmm non mi pare di usare variabili globali nel mio caso...



Quote:
Discorso lungo...
Ogni send (almeno in linea di principio) diventa un pacchetto del flusso TCP o, nel caso la quantità di dati sia troppo grande per un singolo pacchetto, viene frammentata in N pacchetti che poi il ricevitore ricompone. Per massimizzare l'efficienza dovresti fare pacchetti più grande possibile in modo da minimizzare il numero di pacchetti e, di conseguenza, l'overhead dovuto agli header TCP, IP, ecc che devi aggiungere ad ogni pacchetto. D'altro canto, se fai pacchetti grandi, se se ne perde uno e TCP deve ritrasmetterlo, ritrasmetterà una quantità di dati maggiore. Insomma, è un compromesso: per grosse quantità di dati, io farei pacchetti grossi (non meno di 512-1024 byte alla volta)
con grosse quantità di dati intedi roba dell'ordine di?


Quote:
Ok, ora ho capito meglio.
Tu non sai se e quando il server abbia fatto delle recv. Se la tua send ritorna con successo sai che in linea di massima i dati sono arrivati all'altro capo, ma potrebbero essere fermi in qualche buffer. Se vuoi avere qualche garanzia (tipo che il server ha finito di salvare i dati su disco) devi far si che il server risponda con qualche comando di conferma.
Di cosa vuoi aver conferma ?
Beh se spedisco il file, vorrei avere la conferma che esso sia stato ricevuto. Se spedisco il nome del file, vorrei la conferma che esso sia stato ricevuto. E così via.
Ma a quanto mi hanno detto queste conferme non sono necessarie.
O sbaglio?
Eddie1985 è offline   Rispondi citando il messaggio o parte di esso
Old 23-12-2011, 21:09   #25
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Quote:
Originariamente inviato da Eddie1985 Guarda i messaggi
Beh se spedisco il file, vorrei avere la conferma che esso sia stato ricevuto. Se spedisco il nome del file, vorrei la conferma che esso sia stato ricevuto. E così via.
Ma a quanto mi hanno detto queste conferme non sono necessarie.
O sbaglio?
Allora la conferma non serve per quel che riguarda la trasmissione in se'. Immagino pero' ti servira almeno una conferma che tutta la transazione e' andata a buon fine (e se finisce il disco? Se non puoi creare il file ? Se c'e' qualcosa che non va nei dati che hai spedito ?)
__________________
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 23-12-2011, 21:25   #26
Mettiu_
Member
 
L'Avatar di Mettiu_
 
Iscritto dal: Jul 2011
Messaggi: 246
Quote:
Originariamente inviato da Eddie1985 Guarda i messaggi
con grosse quantità di dati intedi roba dell'ordine di?
Difficile dare un numero preciso, dipende dal contesto. Se ti interessano le prestazioni potresti voler ottimizzare anche l'invio di 1000 byte così come di 10 MB, non è che ci sia un numero preciso, sono scelte di progetto...
Per quanto riguarda le conferme NO, non sono necessarie nel senso che i dati arrivano sicuramente. Però, come giustamente facevano notare, il fatto che i dati arrivino non significa che tutto andrà bene: disco pieno, ram finita, ecc... Per risolvere questo problema ci vuole qualcosa di più complesso, tipo una connessione di controllo separata (come il protocollo FTP) per segnalare eventuali problemi da server a client e viceversa. Però in questo caso ti servono più thread... Non mi viene in mente niente di semplicissimo da implementare, pensaci su!
Mettiu_ è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Xiaomi 14T Pro: con MediaTek si risparmia, ma la fotocamera resta Leica Xiaomi 14T Pro: con MediaTek si risparmia, ma la...
Recensione Warhammer 40,000 Space Marine 2: epicità allo stato puro Recensione Warhammer 40,000 Space Marine 2: epic...
Recensione Insta360 Link 2 e Link 2C: l'evoluzione della videoconferenza con l’AI Recensione Insta360 Link 2 e Link 2C: l'evoluzio...
Star Wars Outlaws e il nuovo Canone Star Wars Outlaws e il nuovo Canone
Recensione Turtle Beach Vulcan II TKL Pro: una tastiera analogica senza compromessi Recensione Turtle Beach Vulcan II TKL Pro: una t...
Tamron annuncia il nuovo obiettivo 90mm ...
Samsung Galaxy S24 FE ufficiale! L'esper...
Samsung Galaxy Tab S10 Ultra e S10+: l'i...
Philips Airfryer Serie 3000 e 5000: 2 fr...
Monster Hunter Wilds: tra i requisiti pe...
Nuovi Xiaomi 14T e 14T Pro subito dispon...
Dal robot aspirapolvere alla TV: Xiaomi ...
Nuovi Xiaomi 14T e 14T Pro: le fotocamer...
Xiaomi Mix Flip arriva in Italia! Prezzo...
Troppi dispositivi, maggiore stress: la ...
Canon EOS R5 Mark II: il firmware 1.0.1 ...
Leica Q3 si rinnova: ecco la versione Le...
Galaxy Book3: ecco il computer portatile...
Android, l'approccio Secure By Design d&...
AMD Ryzen Z2: spuntano le specifiche del...
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: 16:53.


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