Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 03-10-2007, 20:00   #1
eaangi77
Junior Member
 
Iscritto dal: Sep 2007
Messaggi: 7
[C] ADDORMENTARE E SVEGLIARE UN PROCESSO

Ciao scusate il disturbo ho un problema,

ho un processo addormentato con pause() che ha creato 4 thread , vorrei risvegliarlo ma utilizzando kill(0,0) non funziona.

Qualcuno può aiutarmi grazie.



Posto il codice.

void controllore(){
while ("true"){
msgrcv (ID_CODA, &messaggio_ricevuto, 5, 1 , MSG_NOERROR );

if (messaggio_ricevuto.mtext == 0){
printf("CONTROLORE SVEGLIA IL CUOCO \n");
raise(SIGUSR1);
}

}
}


static void gestioneSegnali(int segnale){
printf("SEGNALE CATTURATO");
segnalep = 1;
return ;

}


int main() {

ipc_key_coda = ftok(".", 'a');
ID_CODA = msgget(3, IPC_CREAT | 0600);

ipc_key = 1;
sem_id_camerieri = MutexCreate(ipc_key);

f_lettura_portate_ordinate = fopen ( "./portateOrdinate" , "r" );

signal(SIGUSR1,gestioneSegnali);

do{
if (f_lettura_portate_ordinate){

if (!feof(f_lettura_portate_ordinate)){
printf("Portata Lavorata: %s \n", &portata);
printf("\n");
fgets(&portata, 50, f_lettura_portate_ordinate);
sleep(2);

}else{

printf("ADDORMENTA CUOCO \n");
while (segnalep==0) ; //pause(); Pause non risvegliato dal segnale!!! Problema con i thread
printf("CUOCO SVEGLIATO\n");
segnalep=0;
fgets(&portata, 50, f_lettura_portate_ordinate);


}

} else {
printf("ERRORE NELL'APERTURA DEL FILE \n");
}


}while ("true");

printf("TERMINE CUOCO \n");

fclose(f_lettura_portate_ordinate);

return 0;

}

Ultima modifica di eaangi77 : 04-10-2007 alle 00:29.
eaangi77 è offline   Rispondi citando il messaggio o parte di esso
Old 04-10-2007, 10:58   #2
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
kill(pid, 0) controlla solo che il processo esista, non invia nessun segnale.
__________________
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 04-10-2007, 11:04   #3
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Ah e la raise invia il segnale al thread corrente, non al thread principale. La documentazione dice che è implementato come kill(getpid(), ...) ma scommetterei che in realtà usa kill(gettid(), ...).
__________________
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

Ultima modifica di ilsensine : 04-10-2007 alle 11:07.
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 04-10-2007, 23:55   #4
eaangi77
Junior Member
 
Iscritto dal: Sep 2007
Messaggi: 7
Ok, quindi cosa dovrei usare secondo te per far risvegliare il processo

Così il segnale è inviato e gestito e con il ciclo while (segnalep==0) funziona, però con la pause() niente...

Boh

Puoi aiutarmi. Grazie
eaangi77 è offline   Rispondi citando il messaggio o parte di esso
Old 08-10-2007, 09:18   #5
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Puoi usare una esplicita kill(getpid(), SIGUSR1), ma ti consiglierei per motivi di portabilità di usare la pthread_kill:

Codice:
pthread_t main_thread;

int main()
{
...
  main_thread = pthread_self();
...
}

void altro_thread()
{
...
  pthread_kill(main_thread, SIGUSR1);
...
}
__________________
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


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
The Blood of Dawnwalker, il sequel potre...
Colpiti i data center Amazon: irrecupera...
Google Wallet, nuova interfaccia in arri...
iPhone Duo, problemi di produzione per i...
Firefox diventa più veloce con PDF e JPE...
WhatsApp, arriva su iOS la nuova scorcia...
Snap presenta Specs: realtà aumentata, c...
SteamOS verso un cambiamento epocale: ar...
Recensione HUAWEI FreeBuds Neo, piccoli ...
TSMC aumenta i costi di produzione: AMD ...
L'Europa sfida i magnati dei combustibil...
One UI 9 arriva sui Galaxy S26: pi&ugrav...
Hacker chiedono 2,5 milioni di euro a Re...
Home Assistant su uno schermo touch econ...
L'IA entra nei negozi Unieuro con Google...
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:23.


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