Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI Mic Mini 2: audio 48 kHz / 24-bit e protocollo OsmoAudio sotto i 100 Euro
DJI Mic Mini 2: audio 48 kHz / 24-bit e protocollo OsmoAudio sotto i 100 Euro
DJI presenta Mic Mini 2, un sistema microfonico wireless ultra-compatto progettato per democratizzare l'audio di alta qualità nella fascia entry-level. Con un peso di soli 11 grammi per il trasmettitore elimina i fastidi tipici dei modelli più pesanti sui vestiti. Nonostante la miniaturizzazione Mic Mini 2 offre prestazioni tecniche di rilievo: registrazione omnidirezionale a 48 kHz/24-bit, tre preset vocali (Regular, Bright, Rich) e un sistema di cancellazione attiva del rumore a due livelli.
Recensione Moto G77: display AMOLED e buona autonomia per il midrange economico
Recensione Moto G77: display AMOLED e buona autonomia per il midrange economico
Motorola propone in fascia media il nuovo Moto G77 5G, uno smartphone che punta sul display AMOLED da 1.5K a 120Hz, e sulla fotocamera da 108 MP con stabilizzazione ottica per affrontare la fascia media. Il tutto insieme a una batteria da 5200mAh in soli 7,3 millimetri di spessore, con una scocca certificata con standard militari
DJI Lito 1 e Lito X1 recensione: i nuovi droni per principianti che non si fanno mancare nulla
DJI Lito 1 e Lito X1 recensione: i nuovi droni per principianti che non si fanno mancare nulla
DJI ha appena ufficializzato la serie Lito, la sua nuova gamma di droni entry-level destinata a chi si avvicina per la prima volta alla fotografia aerea. Al centro dell'annuncio ci sono due modelli ben distinti per fascia di prezzo e specifiche tecniche: DJI Lito 1 e DJI Lito X1. Entrambi si collocano sotto la soglia regolamentare dei 249 grammi, che permette di volare con requisiti burocratici più semplici rispetto ai droni più pesanti.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-04-2004, 21: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, 21: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, 15: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, 18: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 19:20.
anx721 è offline   Rispondi citando il messaggio o parte di esso
Old 25-04-2004, 19: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


DJI Mic Mini 2: audio 48 kHz / 24-bit e protocollo OsmoAudio sotto i 100 Euro DJI Mic Mini 2: audio 48 kHz / 24-bit e protocol...
Recensione Moto G77: display AMOLED e buona autonomia per il midrange economico Recensione Moto G77: display AMOLED e buona auto...
DJI Lito 1 e Lito X1 recensione: i nuovi droni per principianti che non si fanno mancare nulla DJI Lito 1 e Lito X1 recensione: i nuovi droni p...
Sony World Photography Awards 2026: i premiati, anche italiani, il punto sulla fotografia di oggi Sony World Photography Awards 2026: i premiati, ...
Una settimana con Hyundai Ioniq 5 N-Line: diverte e convince Una settimana con Hyundai Ioniq 5 N-Line: divert...
La missione Artemis III potrebbe essere ...
Mad Catz M.M.O. 7+: il mouse MMO da cult...
SAS porta il calcolo quantistico nelle a...
Un miliardo di dollari da SAS per portar...
SAS si apre all'IA di terzi: Viya integr...
Quantinuum si appresta a debuttare in Bo...
Censis: il 60% degli italiani evita i me...
Cloud sovrano: Microsoft potenzia Azure ...
Spionaggio industriale: l'edge è ...
Cosa cambia davvero su un'auto elettrica...
Agenti AI più costosi dei dipende...
GeForce RTX 5070 Laptop da 12 GB al debu...
Le aziende e i prodotti candidati all'EH...
Il materiale che cambia tutto: funziona ...
Il cavo che 'salva' la tua GPU: Corsair ...
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:36.


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