Mentre sto cercando la pagina man della funzione pthread_rwlock_unlock, ho notato che il func restituirà EPERM se il thread chiamante non ha la proprietà di un rwlock.L'efficienza dell'utilizzo di pthread_rwlock quando ci sono molti lettori
Poiché il rdlock consente a più thread di ottenere il blocco, deve esistere una struttura dati come un collegamento o un array per memorizzare il proprietario di uno specifico rwlock.
Qui viene la domanda:
Il rwlock è stato progettato per raggiungere l'efficienza quando l'operazione di lettura è molto più frequente di quanto le operazioni di scrittura, ma se ci sono gran numero di diversi thread ha ottenuto il blocco di lettura, ogni volta che io chiamo a pthread_rwlock_unlock(), ci vuole tempo per scoprire che il thread chiamante è un proprietario valido. qual è la complessità temporale di questo scenario ..
Grazie ragazzi :)
Sì, grazie n. e Duck, ho letto il codice di pthread_rwlock_unlock(), non esiste un tale controllo ma solo un contatore. In tal caso, la complessità temporale è O (1). – Hmm