Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Le webcam Insta360 Link 2 Pro e Link 2C Pro sono una proposta di fascia alta per chi cerca qualità 4K e tracciamento automatico del soggetto senza ricorrere a configurazioni complesse. Entrambi i modelli condividono sensore, ottiche e funzionalità audio avanzate, differenziandosi per il sistema di tracciamento: gimbal a due assi sul modello Link 2 Pro, soluzione digitale sul 2C Pro
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70 porta il concetto di smartphone ultrasottile su un terreno più concreto e accessibile: abbina uno spessore sotto i 6 mm a una batteria di capacità relativamente elevata, un display pOLED da 6,7 pollici e un comparto fotografico triplo da 50 MP. Non punta ai record di potenza, ma si configura come alternativa più pragmatica rispetto ai modelli sottili più costosi di Samsung e Apple
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
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 06-02-2012, 15:17   #1
soulbw
Junior Member
 
Iscritto dal: Oct 2010
Messaggi: 17
[Help C] Server Concorrente

Ciao a tutti,
come si implementa un server Concorrente in c? mi spiego meglio, so che si usa la fork per far demandare la gestione di un servizio ad un figlio e rimettere il server in ascolto, ma il mio dubbio sorge nel momento in cui bisogna rilevare la fine del figlio e quindi teoricamente bisogna usare la wait...ma cosi facendo di fatto non perdo la concorrenza?

esempio schema server concorrente:
Codice:
for(;;)
{
   accept....
   
   if(fork()==0)
   {
      .......gestione servizio
   }
   wait(); --qui praticamente attendo ogni figlio e allora e' come se fosse sequenziale?
}
se invece faccio cosi
Codice:
 signal(SIGCHILD, funz); // dove fun contiene la wait
for(;;)
   accept....
   
   if(fork()==0)
   {
      .......gestione servizio
   }
   --alla term del figlio viene emesso SIGCHILD
qui per sempio cosa succede?....e come mettere la wait nel caso precedente ?
e sopratutto chi mi garantisce che per ogni figlio venga eseguita una wait?
cioe' nel caso in cui piu figli terminano insieme che accadde?....







Grazie in Anticipo della Risposta!
soulbw è offline   Rispondi citando il messaggio o parte di esso
Old 10-02-2012, 16:49   #2
british
Member
 
L'Avatar di british
 
Iscritto dal: Sep 2008
Città: Milano
Messaggi: 126
Quote:
Originariamente inviato da soulbw Guarda i messaggi
se invece faccio cosi
Codice:
 signal(SIGCHILD, funz); // dove fun contiene la wait
for(;;)
   accept....
   
   if(fork()==0)
   {
      .......gestione servizio
   }
   --alla term del figlio viene emesso SIGCHILD
qui per sempio cosa succede?....e come mettere la wait nel caso precedente ?
e sopratutto chi mi garantisce che per ogni figlio venga eseguita una wait?
cioe' nel caso in cui piu figli terminano insieme che accadde?....

Se non ricordo male, nell'handler metti un ciclo in cui richiami la waitpid chiedendole (primo parametro = -1) di attendere la terminazione di qualsiasi figlio e di non bloccarsi se nessuno figlio ha già terminato (opzione WNOHANG mi pare), cicli finchè non ti restituisce 0.

ciao!
british è offline   Rispondi citando il messaggio o parte di esso
Old 10-02-2012, 17:12   #3
pabloski
Senior Member
 
Iscritto dal: Jan 2008
Messaggi: 8406
L'errore sta nel fatto che la wait la stai mettendo nello stesso for dove chiami fork.

Invece devi prima chiamare n volte fork, per creare gli n figli. Poi ti metti in attesa con wait. Occhio che wait ritorna ogni volta che uno dei figli termina e restituisce il pid del figlio terminato. Quindi devi mettere la wait in un ciclo, che termina solo quando tutti i figli sono terminati.

In pratica una cosa tipo

Codice:
while (figli_terminati != NUMERO_FIGLI) {
   fpid = wait(&status);
   figli_terminati++;
}
Oppure, come suggerito, usi

Codice:
  fpid = waitpid(-1, &status, WNOHANG);
  if (fpid) figli_terminati++;

Ultima modifica di pabloski : 10-02-2012 alle 17:16.
pabloski è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
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...
Amazon aggiorna le offerte anche a metà ...
Trump elogia Microsoft: accordi con le B...
L'Unione Europea scommette sul software ...
In Cina parte la prima linea per batteri...
Un benchmark che mette in difficolt&agra...
OnePlus nella bufera a Taiwan: emesso ma...
Arriva Hyper Hosting, la nuova offerta ...
Steam non si ferma più: nuovo rec...
Venezuela, altro che petrolio: il tesoro...
EcoFlow DELTA Pro Ultra X: potenza e rap...
SK hynix: un nuovo impianto per produrre...
Facebook, cresce il furto di password co...
Tesla lancia la nuova Model Y con 7 post...
NVIDIA smentisce: nessun pagamento antic...
Il prototipo del razzo spaziale riutiliz...
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: 05:21.


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