Visualizzazione dei risultati da 1 a 9 su 9

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    1,317
    il primo problema l'ho risolto... il lock non serve per bloccare nulla... ma per dare una precenza ad una risorso condivisa nel momento in cui viene utilizzata da due thread differenti, no?

    Ora il secondo esempio utilizza "male" la queue per dare delle bloccare/unbloccare... volevo sapere come potrei fare una cosa simile in maniera elegante e più intelligente (la mia è palese sia fatta male, persino da me che non conosco i thread)

  2. #2
    Quote Originariamente inviata da zacca94 Visualizza il messaggio
    il primo problema l'ho risolto... il lock non serve per bloccare nulla... ma per dare una precenza ad una risorso condivisa nel momento in cui viene utilizzata da due thread differenti, no?
    Un lock in genere serve per evitare che più thread accedano alla stessa risorsa in contemporanea, ovvero a garantire che certe operazioni siano atomiche. Se ho due thread che incrementano la stessa variabile contatore senza un lock, alla fine il conteggio sarà sbagliato, perché l'incremento di per sé non è atomico - è composto da lettura della variabile, incremento, scrittura della variabile, e se queste operazioni si mischiano tra un thread e l'altro i risultati saranno errati.
    Per questo in una circostanza del genere si usa un lock, che tutti si impegnano ad acquisire prima di mettere mano ad una risorsa condivisa. Quando uno ha acquisito il lock ha la sicurezza di avere la risorsa tutta per sé, dato che se qualcun altro cerca di acquisire il lock a sua volta viene tenuto fermo fino a quando il primo thread non lo rilascia.
    Ora il secondo esempio utilizza "male" la queue per dare delle bloccare/unbloccare... volevo sapere come potrei fare una cosa simile in maniera elegante e più intelligente (la mia è palese sia fatta male, persino da me che non conosco i thread)
    Ribadisco che non riesco a capire nemmeno cosa vorresti ottenere in quel codice.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.