Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Sfida: Il Blocco a Rilascio Limitato | Multithreading vs. Multiprocessing
Programmazione Strutturale in Python
Sezione 3. Capitolo 7
single

single

Sfida: Il Blocco a Rilascio Limitato

Scorri per mostrare il menu

Compito

Scorri per iniziare a programmare

Un famoso marchio sta lanciando una felpa in edizione limitata con solo 10 pezzi disponibili. Ci sono 50 thread che simulano clienti che cercano di acquistare la felpa contemporaneamente. Il tuo compito è garantire che vengano vendute esattamente 10 felpe, non di più, utilizzando un lock per prevenire condizioni di race.

  • Utilizza l'oggetto lock fornito per sincronizzare l'accesso alla variabile condivisa hoodies_in_stock.
  • Nella funzione buy_hoodie, acquisisci il lock prima di controllare e aggiornare lo stock.
  • Simula l'elaborazione del pagamento aggiungendo un piccolo ritardo (ad esempio, time.sleep(0.01)) mentre il lock è attivo.
  • Se una felpa è disponibile, decrementa hoodies_in_stock e aggiungi il customer_id alla lista dropped_customers.
  • Dopo che tutti i thread hanno terminato, esattamente 10 ID cliente dovrebbero essere presenti in dropped_customers e hoodies_in_stock dovrebbe essere 0.

Soluzione

Switch to desktopCambia al desktop per esercitarti nel mondo realeContinua da dove ti trovi utilizzando una delle opzioni seguenti
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 3. Capitolo 7
single

single

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

some-alt