Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090
Ho affidato ai due modelli lo stesso mestiere ma non lo stesso identico prompt: trasformare una storia illustrata in un video usando una RTX 3090 e modelli locali. Ne sono usciti due film, due applicazioni e due idee opposte di efficienza. Fucina, progettata con Fable 5, colpisce di più nei primi secondi. Storyboard Studio, costruito con ChatGPT/Codex, regge meglio sulla distanza e vince il confronto complessivo, ma di stretta misura
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile
Lenovo ha lanciato il ThinkTab X11 rimettendo piede nel segmento dei tablet Android con il marchio Think dopo oltre un decennio di assenza. Il risultato è un dispositivo che prende una direzione precisa: massima dotazione funzionale, costruzione resistente, autonomia fuori dagli schemi
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot
AMD Advancing AI è l'appuntamento annuale con il quale l'azienda americana mostra quelle che sono le proprie novità dal versante datacenter. Tra piattaforma Helios, GPU Instinct MI455X e processori EPYC di sesta generazione tutto quello che serve per processare l'IA sempre più complessa ed esigente
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-02-2011, 12:13   #1
DP1991
Junior Member
 
Iscritto dal: Feb 2011
Messaggi: 7
[C] Domanda sulla funzione wait()

Salve a tutti, è la prima volta che scrivo in questo forum anche se seguo da molti anni il sito.

Avrei gentilmente bisogno, abbastanza urgentemente poichè domani ho un esame (non vi nascondo che ho già chiesto anche da altre parti), di un aiuto su un esercizio.

Devo stabilire l'output di un programma e dire se quell'output è l'unico possibile.
La mia domanda è: il wait() aspetta che una diramazione QUALSIASI del figlio finisca oppure aspetta necessariamente figlio->figlio, non facendo fare altro al figlio->padre?

In pratica il programma stampa, nelle varie prove che ho fatto:
1 2 3 4 4 3 4
oppure (non sul mio pc, ma su quello di un amico)
1 2 3 4 3 4 4

Quello che cercavo di dire prima è se è possibile che il programma stampi
1 2 3 3 4 4 4, ovvero può il processo figlio->padre stampare il 3 prima che il processo figlio->figlio finisca?


Il programma che mi ha fatto sorgere il dubbio è il seguente:

codice:
Codice:
#include <stdio.h> 
#include <unistd.h> 
int main() 
{ 	
      printf ("1\n"); 	
      if (fork()==0) 
       { 		
              printf ("2\n"); 		
              fork(); 		
              printf ("3\n"); 	
        }else 		
               wait(); 	 	
        printf ("4\n"); 
}


Ringrazio già in anticipo chiunque mi risponderà!
Ciao!
DP1991 è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2011, 14:32   #2
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
la wait si sblocca quando termina un figlio (a dire il vero si sblocca anche quando vieni interrotto da un segnale, cosa che non controlli, e poi mancano un po' di wait per evitare gli zombie)

in pratica la wait che c'è lì si sblocca solo quando è terminato il processo generato dalla prima fork
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2011, 14:52   #3
DP1991
Junior Member
 
Iscritto dal: Feb 2011
Messaggi: 7
Ti ringrazio, ma non mi hai detto niente di nuovo!
Io volevo sapere in pratica se può essere stampato 1 2 3 3 4 4 4...
O meglio, so che si blocca quando termina il processo della prima fork(), ma dato che questo processo si duplica ancora, vorrei sapere se a finire e a sbloccare la wait() è il processo figlio->figlio, senza che il processo figlio->padre possa stampare qualcosa nel mentre. Con altre parole ancora, la wait() agisce anche sul figlio->padre?

Ultima modifica di DP1991 : 13-02-2011 alle 15:08.
DP1991 è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2011, 15:12   #4
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
forse non è chiaro, si sblocca se termina un figlio, non un nipote

infatti dovresti fare la wait nel primo figlio per non avere il nipote zombie

comunque quella stampa puoi averla

p1: stampa 1
p1: fork() e genera p2
p1: stampa wait() e si blocca
p2: stampa 2
p2: fork() e genera p3
p2: stampa 3
p3: stampa 3
p3: stampa 4
p3: termina
p2: stampa 4
p2: termina
p1: stampa 4
p1: termina

è uno schedule legale

Ultima modifica di tuccio` : 13-02-2011 alle 15:19.
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2011, 15:24   #5
DP1991
Junior Member
 
Iscritto dal: Feb 2011
Messaggi: 7
Ok, però allora perchè mi stampa 1 2 3 4 4 3 4??

Il secondo 4 è sicuramente quello del padre, quindi vuol dire che la wait si sblocca quando termina un "nipote", no??
DP1991 è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2011, 15:25   #6
DP1991
Junior Member
 
Iscritto dal: Feb 2011
Messaggi: 7
Io graficamente la vedo così:



Uploaded with ImageShack.us
DP1991 è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2011, 15:43   #7
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
Quote:
Originariamente inviato da DP1991 Guarda i messaggi
Ok, però allora perchè mi stampa 1 2 3 4 4 3 4??

Il secondo 4 è sicuramente quello del padre, quindi vuol dire che la wait si sblocca quando termina un "nipote", no??
il secondo 4 non è per forza quello del padre, il fatto che figlio1 termini, permette al padre di sbloccarsi, ma non deve sbloccarsi per forza appena termina, è un'assunzione che non puoi fare

l'unica cosa che puoi dire lì è che figlio1 termina prima di padre, il 4 del padre può essere anche l'ultimo stampato, perché può terminare per ultimo

ps: se a te stampa la stessa cosa è per come ragiona il tuo scheduler, il punto è solo che quello schedule non viene meno a nessun vincolo "di precedenza" (nel tuo caso c'è solo che figlio1 deve terminare prima che padre stampi 4), quindi è legale

Ultima modifica di tuccio` : 13-02-2011 alle 15:46.
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2011, 15:49   #8
DP1991
Junior Member
 
Iscritto dal: Feb 2011
Messaggi: 7
Capisco quello che mi stai dicendo, ma io sono abbastanza sicuro che quello è il 4 del padre, perchè altrimenti dovrebbe avere davanti un 3, non credi? Il 4 dovrebbe essere sempre preceduto dal 3 a meno che non sia il 4 del padre oppure 3344...
DP1991 è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2011, 15:53   #9
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
ah sì nel tuo caso sì, ovviamente, pensavo parlassi di "1233444"
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2011, 15:57   #10
DP1991
Junior Member
 
Iscritto dal: Feb 2011
Messaggi: 7
Ok, penso sia chiaro ora.

Un'ultima cosa per ora, lo schema che ho postato è giusto secondo te? O meglio, è corretto vederla così, o c'è qualche errore logico?
DP1991 è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2011, 16:03   #11
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
dipende, come devo interpretare 2 comandi che stanno sulla stessa riga?
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 13-02-2011, 16:13   #12
DP1991
Junior Member
 
Iscritto dal: Feb 2011
Messaggi: 7
Be, secondo quello che mi hai detto tu vanno "a caso", mentre io prima credevo facesse prima il ramo figlio1->figlio2 e poi padre e figlio->padre2 a caso...
DP1991 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Fable e Sol a confronto: due cartoni animati creati su un PC con RTX 3090 Fable e Sol a confronto: due cartoni animati cre...
Il tablet rugged leggero e sottile: Lenovo ThinkTab X11 offre resistenza, doppia USB-C e batteria rimovibile Il tablet rugged leggero e sottile: Lenovo Think...
AMD Advancing AI 2026: l'hardware AMD per le elaborazioni IA del futuro, tra GPU, CPU e robot AMD Advancing AI 2026: l'hardware AMD per le ela...
Tascabile e con Android: BOOX Go 6 Gen II è diverso da tutti gli altri e-reader Tascabile e con Android: BOOX Go 6 Gen II &egrav...
Recensione Lenovo Idea Tab Plus: il tablet da 12 pollici che costa meno di 300 euro Recensione Lenovo Idea Tab Plus: il tablet da 12...
QNAP lancia i nuovi NAS TS-262A e TS-462...
E4 Computer Engineering e EuroHPC JU uni...
World di Sam Altman raccoglie 52,5 milio...
AMD prepara il futuro delle CPU Ryzen: Z...
Intel fa marcia indietro: torna la tecno...
Honor ROBOT PHONE ha una data d'uscita: ...
TSMC accelera sulla produzione a 2 nm: u...
Diritto alla riparazione, dal 31 luglio ...
WhatsApp introduce il conteggio privato ...
Lenovo IdeaPad Slim 3 a 499,90€: ecco pe...
Benzina e diesel ai massimi: il Governo ...
ECOVACS DEEBOT T30e OMNI a 299€ e T50 PR...
Gli X-Men sono assenti in Marvel's Wolve...
I primi occhiali intelligenti di Apple p...
Apple TV svela il primo trailer ufficial...
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: 12:09.


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