Torna indietro   Hardware Upgrade Forum > Software > Programmazione

OPPO Watch X2 Mini, lo smartwatch compatto a cui non manca nulla
OPPO Watch X2 Mini, lo smartwatch compatto a cui non manca nulla
OPPO Watch X2 Mini è uno smartwatch compatto capace di offrire un'esperienza completa di monitoraggio della salute e fitness con una cassa da 43 mm che può adattarsi a qualsiasi tipo di polso, dal più grande al - soprattutto - più piccolo. Con l'architettura dual-chip e un'autonomia che può coprire due giorni con tranquillità, rappresenta la soluzione ideale per chi cerca prestazioni premium in un formato ridotto.
Xiaomi 15T Pro, è lui il nuovo best buy? La recensione
Xiaomi 15T Pro, è lui il nuovo best buy? La recensione
Dopo il recente lancio della serie Xiaomi 15T di Monaco, vi parliamo oggi della versione più performante della nuova famiglia, ovvero Xiaomi 15 T Pro. Vi raccontiamo la nostra prova nel dettaglio, spiegando perché a questo prezzo e in questa fascia, questo smartphone ha davvero senso tenerlo in seria considerazione.
Acer TravelMate P6 14 AI: il Copilot+ PC sotto il chilo per il professionista in movimento
Acer TravelMate P6 14 AI: il Copilot+ PC sotto il chilo per il professionista in movimento
Acer ha ampliato la sua offerta professionale con il TravelMate P6 14 AI, un notebook ultraleggero e robusto pensato per chi lavora in mobilità. Certificato Copilot+ PC, combina design premium, autonomia elevata e piattaforma Intel Core Ultra Serie 2 con funzionalità AI, garantendo sicurezza, affidabilità e produttività per l'utenza business moderna.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-04-2002, 19:03   #21
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
Che compilatore usi ?

Un'altra cosa non capisco... come mai nel file hai incluso i pthread ? Poi non li usi mi sembra ...
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso
Old 13-04-2002, 21:17   #22
paplo
Member
 
L'Avatar di paplo
 
Iscritto dal: Mar 2001
Città: Pordenone
Messaggi: 73
veramente non lo neanche io perchè includiamo pthread.h. evidentemente è stata una modifica in corso d'opera.

il compilatore che uso in Windows è ... LCC-Win32.

il problema è che il cambiamento di stato del semaforo a destra e a sinistra non viene mai effettuato.
e allora come posso modificare???

Ciao,
Paplo

P.S: l'ultima modifica è questa ...
__________________
Età : 28 - Sviluppatore PHP
paplo è offline   Rispondi citando il messaggio o parte di esso
Old 13-04-2002, 22:19   #23
MickMacello
Senior Member
 
Iscritto dal: Dec 1999
Messaggi: 139
scusa ma...se la memoria non mi inganna(ho studiato sta roba anni fa e da allora non ho più avuto occasione di usarla):
tu ridefinisci il tipo int come tipo semaphore.
definisci le funzioni wait e signal che usano il tuo tipo semaphore cioè un semplice int...
Ma queste non sono funzioni atomiche. Devi usare quelle fornite dal sistema operativo che nel caso di linux sono contenute nelle librerie
wait.h, signal.h, unistd.h pthread.h ecc ecc (in win non saprei). Altrimenti la sincronizzazione tra processi non funzionerà mai.
__________________
Ingegnere: colui che ha molta familiarità con i modelli e molto poca con le modelle.
MickMacello è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2002, 08:50   #24
paplo
Member
 
L'Avatar di paplo
 
Iscritto dal: Mar 2001
Città: Pordenone
Messaggi: 73
x MickMacello

non capisco quello che vuoi dire!?

cmq. per il mio programma ho preso spunto dal programma dei 5 filosofi.
ecco le funzioni wait e signal che ho trovato ...

"
void wait(semaphore s)
{
int junk;
if(read(s[0], &junk, 1) <= 0) {
printf("ERROR: wait() fallita in creazione semaforo!\n");
exit(1);
}
}

void signal(semaphore s)
{
if(write(s[1], "x", 1) <=0){
printf("ERROR: write() fallita nella creazione semaforo!\n");
exit(1);
}
}
"
__________________
Età : 28 - Sviluppatore PHP
paplo è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2002, 11:23   #25
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Così non va bene...è solo una simulazione della wait e della signal in caso di singolo processo...

La wait e la signal come già datto da MickMacello devono essere operazioni atomiche ovvero devono essere system call che lavorando a livello del kernel non possono essere interrotte dallo scheduler (o da altri programmi)...

Poi hai implementato il blocco sulla wait come una funzione chiamata up...quella funzione non esiste perchè è già implementata dalla system call wait...

In pratica wait è così :
Codice:
void wait(semaphore *s)
{
  if ((*s)==0)
    mi_metto_in_attesa_passiva(); //ovvero lo schedule mi mette in
         //coda dei processi bloccati sul semaforo s
  --(*s);
}
Mentre la signal è in pratica così :
Codice:
void signal(semaphore *s)
{
  ++(*s);
}
Dirai simili alle tue...ma devono essere atomiche...quindi anche le interruzioni esterne devono essere disabilitate...e questo avviene solo per le system call...

Ad esempio lo scheduler ti toglie il processore suito dopo averti svegliato da una wait...prima di eseguire --s...un altro processo fa una wait (s in questo momento è a 1 perchè un altro processo ha fatto una signal per svegliare il processo in attesa sul semaforo)...la wait non blocca per questo processo e s va a 0...
Ora che succede, quendo al primo processo viene riassegnato il processore esegue --s...quindi il semaforo si porta in uno stato inconsistente e probabilmente non più recuperabile !!!

Quindi sia wait che signal devono essere atomiche...quindi system call !!!
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2002, 11:36   #26
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Inoltre le varie funzioni up, down, wait e signal che ha usato sono concettualmente sbagliate perchè dovrebbero lavorare con puntatori...altrimenti il valore di s che viene cambiato all'interno delle funzioni è solo valido all'interno delle stesse (fai un passaggio deid ati per valore)...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2002, 12:12   #27
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
azz... io non me n'ero accorto... pensavo usate chiamate di sistema !
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2002, 14:23   #28
paplo
Member
 
L'Avatar di paplo
 
Iscritto dal: Mar 2001
Città: Pordenone
Messaggi: 73
x Cionci

ho effettuato le modifiche che mi hai suggerito, però ...
mi da questi errori ...

"passing arg 1 of 'wait' from incompatible pointer type"
"passing arg 1 of 'signal' from incompatible pointer type"

presumo da ciò che devo creare una funzione che crei un semaforo, è vero?!
ma come devo fare!?!? AIUTO!!!

inoltre ho modificato il tuo wait affinchè se il semaforo S non è verde esca, ovvero salti il turno

Codice:
void wait(semaphore *s)
{
if ((*s)==0)
exit(1); //ovvero lo schedule mi mette in
//coda dei processi bloccati sul semaforo s
--(*s);
}
è corretto???

Grazie mille,
Paplo

P.S. ecco il listato ...
__________________
Età : 28 - Sviluppatore PHP
paplo è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2002, 14:27   #29
paplo
Member
 
L'Avatar di paplo
 
Iscritto dal: Mar 2001
Città: Pordenone
Messaggi: 73
il listato precendete è errato.

ve lo rimando corretto ...
__________________
Età : 28 - Sviluppatore PHP
paplo è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2002, 15:40   #30
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
Ma ti e' richiesto di crearti tu i semafori ?
Non ti sarebbe piu' semplice utilizzare le chiamate che ti forniscono le librerie ?
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2002, 16:03   #31
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da paplo
[b]x Cionci

ho effettuato le modifiche che mi hai suggerito, però ...
mi da questi errori ...
Attenzione io non ti ho suggerito delle modifiche...quella che ti ho data è la possibile implementazione della wait e della signal a livello di kernel...
Tu non puoi implementare wait e signal...devi usare quelle fornite dal sistema operativo perchè devono essere atomiche !!!
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2002, 16:06   #32
MickMacello
Senior Member
 
Iscritto dal: Dec 1999
Messaggi: 139
paplo cazzarola non ci siamo. Devi usare le chiamate di sistema.
Togli le definizioni di wait e signal e includi le librerie di sistema che le implementano.
Nel tuo file sorgente non devono comparire queste righe:
Codice:
void wait(semaphore s);
void signal(semaphore s);

void wait(semaphore s)
{
if ((*s)==0)
exit(1); //ovvero lo schedule mi mette in
//coda dei processi bloccati sul semaforo s
--(*s);
}


void signal(semaphore s)
{
++(*s);
}
__________________
Ingegnere: colui che ha molta familiarità con i modelli e molto poca con le modelle.
MickMacello è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2002, 18:18   #33
paplo
Member
 
L'Avatar di paplo
 
Iscritto dal: Mar 2001
Città: Pordenone
Messaggi: 73
vi ringrazio per la pazienza.

appena posso vi riferiro il risultato!
__________________
Età : 28 - Sviluppatore PHP
paplo è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2002, 18:21   #34
paplo
Member
 
L'Avatar di paplo
 
Iscritto dal: Mar 2001
Città: Pordenone
Messaggi: 73
Quote:
Originariamente inviato da /\/\@®¢Ø
[b]Ma ti e' richiesto di crearti tu i semafori ?
Non ti sarebbe piu' semplice utilizzare le chiamate che ti forniscono le librerie ?
ho controllato il testo dell'esercizio e c'è scritto ...
"Gli esercizi proposti nel seguito devono essere realizzati in C utilizzando, laddove è necessario, le chiamate di sistema e le funzioni di libreria del caso. "

così è molto più facile!

(un'altra volta sono stato costretto a creare un metodo Random in java perchè il professore non voleva che utilizassimo quello della libreria Math)

Ciao,
Paplo
__________________
Età : 28 - Sviluppatore PHP
paplo è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2002, 18:49   #35
/\/\@®¢Ø
Bannato
 
L'Avatar di /\/\@®¢Ø
 
Iscritto dal: Jul 2000
Città: Malo (VI)
Messaggi: 1000
Quote:
Originariamente inviato da paplo
[b]
così è molto più facile!
Piu' che altro indispensabile...
/\/\@®¢Ø è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2002, 20:17   #36
paplo
Member
 
L'Avatar di paplo
 
Iscritto dal: Mar 2001
Città: Pordenone
Messaggi: 73
Quote:
Originariamente inviato da /\/\@®¢Ø
[b]

Piu' che altro indispensabile...
no ... ho trovato anche il problema dei 5 filosofi con le funzioni wait, signal e make_semaphore funzionanti.
__________________
Età : 28 - Sviluppatore PHP
paplo è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2002, 22:02   #37
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da paplo
[b]no ... ho trovato anche il problema dei 5 filosofi con le funzioni wait, signal e make_semaphore funzionanti.
Funzionante male

Te l'ho detto...fidati... Ti può funzionare 10 volte, 100 volte, 1000 volte...ma sicuramente, per Murphy, ti andrà male proprio quando ti serve veramente !!!

Tutte le primitive di sincronizzazione DEVONO essere atomiche...o per lo emno devono appoggiarsi ad una primitiva di sincronizzazione atomica (ad esempio si possono implementare la wait e la signal con una mutex)...punto e basta...non ci sono alternative...
Altrimenti le puoi provare ad implementare come ti pare, ma saranno sempre errate...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 15-04-2002, 08:39   #38
paplo
Member
 
L'Avatar di paplo
 
Iscritto dal: Mar 2001
Città: Pordenone
Messaggi: 73
Ciao,

ho provato ad utilizzare le funzioni atomiche, ma mi da cmq. errori ...

filosofi.c:19: warning: initialization makes pointer from integer without a cast
filosofi.c: In function `main':
filosofi.c:45: warning: assignment makes pointer from integer without a cast
filosofi.c: In function `put_cards':
filosofi.c:135: warning: passing arg 1 of `signal' makes integer from pointer without a cast
filosofi.c:135: too few arguments to function `signal'
filosofi.c:136: warning: passing arg 1 of `signal' makes integer from pointer without a cast
filosofi.c:136: too few arguments to function `signal'

putroppo non riesco a risolverli!

Ancora grazie per la disponibilità.

Ciao,
Paplo.

P.S.:il listato è ...
__________________
Età : 28 - Sviluppatore PHP
paplo è offline   Rispondi citando il messaggio o parte di esso
Old 16-04-2002, 10:04   #39
paplo
Member
 
L'Avatar di paplo
 
Iscritto dal: Mar 2001
Città: Pordenone
Messaggi: 73
Ciao,

qualcuno mi suggerisce come inizializzare i semafori.

Grazie 1000,
Paplo.
__________________
Età : 28 - Sviluppatore PHP
paplo è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


OPPO Watch X2 Mini, lo smartwatch compatto a cui non manca nulla OPPO Watch X2 Mini, lo smartwatch compatto a cui...
Xiaomi 15T Pro, è lui il nuovo best buy? La recensione Xiaomi 15T Pro, è lui il nuovo best buy? ...
Acer TravelMate P6 14 AI: il Copilot+ PC sotto il chilo per il professionista in movimento Acer TravelMate P6 14 AI: il Copilot+ PC sotto i...
ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondo...
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint Cybersecurity: email, utenti e agenti IA, la nuo...
5 kg di oro puro, ecco da dove nasce la ...
Lego Game Boy completamente funzionante,...
Il Premio Nobel per la Fisica 2025 a Cla...
Amkor investirà fino a 7 miliardi...
ARC Raiders gratis? Solo per chi compra ...
Premi fino a 30 mila dollari per chi tro...
Bollette a sorpresa: il prezzo dell'ener...
Apple aggiorna due app con il nuovo desi...
Arriva Qualys Enterprise TruRisk Managem...
Super offerta Amazon: ASUS Vivobook Go 1...
Nuovo MacBook Air M4 a soli 949€ su Amaz...
Roborock R25 Ultra: l'aspirapolvere che ...
Qualcomm compra Arduino e subito si vedo...
HUAWEI WATCH GT 6, prezzo fuori dal comu...
Battlefield 6 su PS5 arriva completo su ...
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: 18:32.


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