Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
A Londra, per il trentennale dei Toughbook, Panasonic ha presentato il tablet G3 e il 2-in-1 34. Con Jon Tucker, a capo dell'ingegneria europea, abbiamo parlato di ciò che non si vede: batterie, antenne, porte seriali e accorgimenti nati sul campo
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione
realme C100x scommette tutto, forse troppo, sulla batteria da 7500 mAh e sulla certificazione ArmorShell per farsi notare nella fascia più economica del mercato: lo abbiamo messo alla prova per capire a chi è rivolto questo smartphone che sacrifica un po' prestazioni, display e fotocamera per offrire l'autonomia migliore possibile a un prezzo decisamente contenuto
Star Wars Zero Company è l'erede di XCOM 2
Star Wars Zero Company è l'erede di XCOM 2
Bit Reactor porta nell’universo di Star Wars una struttura tattica che richiama apertamente XCOM 2, ma la arricchisce con legami tra i personaggi, progressione ruolistica, gestione della base e un sistema di combattimento costruito attorno a tre Punti Azione e alle risorse condivise della squadra
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 10-02-2007, 10:25   #1
LOVE85
Member
 
Iscritto dal: Jun 2006
Messaggi: 86
[Ansi C] - Programmazione Concorrente : Bar Sport

Salve io vorrei solo capire swe ho capito bene come devo fare conquesto progetto:

Realizzare due implementazioni in C che realizzino con Semafori e Monitor una soluzione
concorrente al seguente problema:
Il Bar Sport
�� Nel bar Sport il barista prepara i caffè posizionando le tazzine piene sul bancone del bar in attesa dei clienti (che sono M).

�� Sul bancone al massimo possono essere posizionate N tazzine (N<M).

�� Quando il bancone è pieno di tazzine di caffè il barista si sospende mettendosi a leggere la Gazzetta dello Sport.

�� Man mano che arrivano, i clienti prendono una tazzina di caffè, ma prima di berlo devono zuccherarlo e una sola zuccheriera è disponibile.

�� Una volta zuccherato e bevuto il caffè, i clienti escono dal bar per fumarsi una sigaretta.

�� Una volta terminata la sigaretta i clienti tornano dentro al bar per prendere un altro caffè

�� Il cliente che beve l’ultima tazzina di caffè sveglia il barista, interrompendo la sua lettura.
�� I clienti che nel frattempo arrivano al bar e vogliono bere il caffè si sospendono in attesa che il barista abbia finito di riempire il bancone di tazzine di caffè.

�� Quando il barista ha riempito il bancone allora si occupa di svegliare i clienti in attesa
del caffè.

La soluzione proposta deve assicurare il massimo grado di parallelismo, non deve usare
busy waiting, ne’ generare deadlock o starvation. Commentare in modo chiaro il codice.

Il mio algoritmo pensato è:

#define tazzine 5

MEX: Sono le ore 7:00 e il barista sta aprendo il bar
SLEEP: 5 sec
MEX: Il barista ha aperto il bar.
SLEEP: 5 sec
MEX: Il barista inizia a prepare le tazzine
CICLO:
FOR (I=0; I<TAZZINE I++)
{
IF (TAZZINE<2)
IL BARISTA HA PREPARATO %d TAZZINA (%d = tazzINE)
ELSE
IL BARISTA HA PREPARATO %d taZZINE (%d = tAZZINE)
tazzine++;
sleep 5 secondi
}
MEX: Fatto! il barista ha posizionato %D TAzzine sul bancone. Ora va a leggere la gazzetta dello sport. (stato di waiting)
MEX: Dopopochi secondi arrivano con la random m clienti (FARei una random tra 1,3,6 clienti...
MEX: I clienti sono seduti davanti al bancone
CICLO:
FOR I=0; I<CLIENTI; I++)
{
CLIENTE numero %D prende zuccheriera.
SLEEP 2 SEC
CLIENTE HA ZUCCHERATO IL SUO CAFFE'
cliente++;
CLIENTE numero %D (clIENTE-1) passa la zuccheriera al cliente numero %D (cliente successivo)
}
MEX: dopo che tutti hanno finito di bere il caffè
Vanno a fumarsi la sigaretta
CICLO: simile a quello di prima solo che si accendo la sigaretta uno ogni tanto...penso che sia così no?

Però come faccio a dire che l'ultimo cliente che ha bevuto la tazzina attiva dallo stato di wait del barista per far in modo che il barista prepari altro caffè?
Come faccio a mettere in waiting gli altri clienti affincè il barista non ha riposizionato n tazzine? Con un if? I semafori e monitor come li implemento?
Vorreei solo sapere se l'algoritmo va bene ecome fare l'implementazione dei semafori.

Grazie
Cordiali Saluti
Non voglio mica farvi impazzire con sta roba che a me hanno fatto impazzire!!!
LOVE85 è offline   Rispondi citando il messaggio o parte di esso
Old 10-02-2007, 14:39   #2
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
Beh non è prorpio così. Nel mezzo credo che tu ci debba mettere thread, mutex, condition e semaphore.

La sincronizzazione fra barista e clienti è un problema di produttore consumatore, la risorsa condivisa è il bancone (un intero), da accedere in mutua esclusione.
Nel caso in cui il bancone sia pieno il produttore (barista) si mette in attesa su una condition. Il consumatore (cliente) che preleva l'ultimo caffè (l'intero va a zero dopo il prelievo) sveglia il barista liberando la mutex. Nel caso il bancone sia vuoto i clienti si mettono in attesa su una condition. (che il bancone sia pieno)

La zuccheriera è una semplice risorsa in mutua esclusione.

La sigaretta è una sleep.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 11-02-2007, 10:12   #3
LOVE85
Member
 
Iscritto dal: Jun 2006
Messaggi: 86
E quindi...

E quindi come lo impostereste? Io entro la prox sett devo averlo finito...Ce l'hanno dato all'ultimomomento....e noi del gruppo dobbiamo dare esami diversi...come facciamo? Siamo nell'assoluta merda....vi prego di darci una mano magari a creare solo questo programma...e questa è l'ultima cosa che vi chiediamo ok?
LOVE85 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34 Panasonic, 30 anni di Toughbook: la "Bibbia...
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione realme C100x, lo smartphone economico con la bat...
Star Wars Zero Company è l'erede di XCOM 2 Star Wars Zero Company è l'erede di XCOM ...
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia) Test ride Can-Am Origin: la moto elettrica che f...
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco Logitech G325, G305 e G316 X: il tris per chi no...
Apple ha rinviato il piano di taglio di ...
Revolut mette nero su bianco i requisiti...
Dreame svuota il magazzino per il Prime ...
Un utente Reddit perde un banco di DDR4 ...
TV Amazon Ember da 32, 40, 43 e 50'' in ...
Pixel 11a trapela in anticipo: design qu...
ECOVACS, sconti fino a 300€ su robot asp...
Modern Warfare 4, tutti i dettagli tecni...
Il Big Mac costa in base al quartiere: M...
Il riconoscimento facciale IA fa cilecca...
XBOX, la funzione disc-to-digital arriva...
Più unico che raro: mini PC con 3...
Cybersecurity proattiva: viaggio nel SOC...
I dispositivi Amazon più scontati: Fire ...
Nuvacore, dagli ex di Nuvia arriva un'id...
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: 11:24.


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