Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Cos'è la bolla dell'IA e perché se ne parla
Cos'è la bolla dell'IA e perché se ne parla
Si parla molto ultimamente di "bolla dell'intelligenza artificiale", ma non è sempre chiaro perché: l'IA è una tecnologia molto promettente e che ha già cambiato molte cose dentro e fuori le aziende, ma ci sono enormi aspettative che stanno gonfiando a dismisura i valori delle azioni e distorcendo il mercato. Il che, com'è facile intuire, può portare a una ripetizione della "bolla dotcom", e forse anche di quella dei mutui subprime. Vediamo perché
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-04-2004, 22:02   #1
anx721
Senior Member
 
L'Avatar di anx721
 
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
[c/c++]Generare un processo e se non termina entro 5 secondi lo uccido

Salve,

quello che devo fare è la seguente cosa: devo eseguire un certo numero di computazioni; ognuna di queste deve essere eseguita in un processo separato. Un nuovo processo non puo essere creato prima che il precedente si sia concluso, e ogni processo deve concludersi ad esempio entro 5 secondi, se no lo si uccide e si passa a generare il successivo. Io ho fatto cosi:

- ho registrato una funzione handler per il segnale SIGALRM, che posso generare a mio piacimento, specificando dopo quanti secondi deve esserci il segnale.

- eseguo la fork, registrandomi il pid del processo creato; quindi chiamo la alarm(5) per generare l'allarme tra 5 secondi, dopodichè chiamo waitpid(pid, ...) per attendere la terminazione del processo. Se il processo non termina entro 5 secondi, scatta l'allarme, e la funzione handler esegue una kill(pid) per uccidere il processo che non è terminato.

Pero potrebbe esserci un inconveniente; supponiamo che debba generare 10 peocessi uno dopo l'altro; se imposto il codice in questo modo:

Codice:
for(int 1 = 0; i < 10; i++)
      pid = fork();
      alarm(5);
      if(pid == 0)
             break;
      wait(pid....);
potrebbe verificarsi che l'allarme dell'iterazione precedente venga a scattare proprio subito dopo la fork ma prima della nuova chiamata ad alarm(5): in questo modo il processo appena creato sarebbe ucciso senza che siano passati i 5 secondi. Allora potrei mettere alarm(5) prima della fork:

CODE]
for(int 1 = 0; i < 10; i++)
alarm(5);
pid = fork();
if(pid == 0)
break;
wait(pid....);
[/code]

In questo modo se un processo viene ucciso questo è per forza quello generato subito dopo la chiamata ad alarm() e non uno precedente (perche se il precedente non fosse terminato sarei ancora bloccato nella wait). Pero non posso avere la certezza che l'istruzione:

pid = fork();

venga conclusa entro 5 secondi: se cosi non avviene avrei che il segnale della precedente alarm() potrebbe essere generato quando il figlio ancora non è stato creato e quindi sarebbe sprecato, con la conseguenza che se non terminasse non saprei come ucciderlo perche il relativo allarme è gia avvenuto.

Sono giusti i miei ragionamenti? Potrei eliminare il problema della prima versione concludendo il cilco for con una chiamata alarm(0)?

Tra le due versioni penso che la seconda sia piu sicura, ma come posso impostare la cosa per avere l'assoluta certezza di quel che deve succedere? Ci sono funzioni alternative e piu specifiche che posso usare? C'è ad esempio una funzione che dato il pid mi dice se il processo relativo a quel pid e terminato o no?

Grazie, ciao.
__________________
Sun Certified Java Programmer
EUCIP Core Level Certified

European Certification of Informatics Professionals
anx721 è offline   Rispondi citando il messaggio o parte di esso
Old 24-04-2004, 22:16   #2
anx721
Senior Member
 
L'Avatar di anx721
 
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
Ho trovato sulla documentazione a proposito di alarm(seconds):

If seconds is 0, a pending alarm request, if any, is cancelled.

Quindi se cancello la richiesta di allarme subito dopo la terminazione di un processo, un allarme dell'iterazuine precedente non dovrebbbe interferire con la successiva iterazione:

Codice:
for(int 1 = 0; i < 10; i++)
      pid = fork();
      alarm(5);
      if(pid == 0)
             break;
      wait(pid....);
      alarm(0);
Dite che va bene cosi? O ci sono dei dettagli che mi sfuggono?
__________________
Sun Certified Java Programmer
EUCIP Core Level Certified

European Certification of Informatics Professionals
anx721 è offline   Rispondi citando il messaggio o parte di esso
Old 25-04-2004, 16:17   #3
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Hai una piccola race condition tra la wait e la alarm(0), ma è assolutamente innocua. Va bene come hai fatto.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 25-04-2004, 19:43   #4
anx721
Senior Member
 
L'Avatar di anx721
 
Iscritto dal: Oct 2002
Città: Roma
Messaggi: 1502
Quote:
Originariamente inviato da ilsensine
Hai una piccola race condition tra la wait e la alarm(0), ma è assolutamente innocua. Va bene come hai fatto.
Se hai tempo me la spieghi?

Se ti riferisci al fatto che potrebbe scattare l'allarme precedente dopo la wait ma prima del nuovo alarm(0), verrebbe eseguita la kill sul pid sul processo appena terminato, che mi sembra non dia problemi.
__________________
Sun Certified Java Programmer
EUCIP Core Level Certified

European Certification of Informatics Professionals

Ultima modifica di anx721 : 25-04-2004 alle 20:20.
anx721 è offline   Rispondi citando il messaggio o parte di esso
Old 25-04-2004, 20:21   #5
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Se un processo termina regolarmente poco prima dei 5 secondi, la wait termina e viene eseguito successivamente alarm(0). Se tra la wait e la alarm scadono i 5 secondi, viene generato un SIGALRM dopo la wait (quindi a processo finito) ma prima della alarm(0). E' un evento a probabilità quasi nulla, ma possibile (e comunque assolutamente innocuo).
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7 FRITZ!Repeater 1700 estende la rete super-veloce...
Cloud sovrano: l'approccio di Broadcom c...
HONOR conferma l'arrivo in Italia di Mag...
La Cina sotto pressione impone maniglie ...
OpenAI integra le app in ChatGPT per tra...
NVIDIA sarebbe pronta a tagliare la prod...
Prezzo minimo storico per iPhone 16 Pro:...
Riot Games scopre una falla nei BIOS che...
Beats in super offerta su Amazon: aurico...
Batterie elettriche, Samsung SDI e Stell...
Clivet presenta Fullness, la pompa di ca...
SpaceX lancerà 167 razzi spaziali...
Yakuza Kiwami 3 e Dark Ties protagonisti...
Privacy a rischio: ecco la VPN che regis...
SpaceX ha annunciato che un satellite St...
ASUSTOR presenta i nuovi NAS Lockerstor ...
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: 17:51.


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