Eine Frage bezüglich std::shared_mutex
und die Übernahme von unique_lock
.Kann thread versuchen, std :: lock [_unique] ein std :: shared_mutex verhungern von Threads std :: lock_shared aufrufen?
Angenommen, es gibt 3 Themen:
- 2 Leser (versuchen zu
lock_shared()
diestd::shared_mutex
) und - 1 Schreiber (bis
lock[_unique]()
diestd::shared_mutex
versuchen)
Ist es möglich, dass die Schriftsteller versucht zu lock[_unique]()
wäre verhungert? Zum Beispiel: Mindestens ein Leser besitzt eine std::shared_lock
, und lock[_unique]()
kann niemals erfolgreich sein.
Mehr oder weniger: würde lock[_unique]()
auf einem std::shared_mutex
blockieren alle Versuche, lock_shared()
es weiter zu machen?
(ziemlich sicher, dass boost::upgrade_lock
könnte hier arbeiten, aber ich würde gerne wissen, ob eine Garantie für bare std::unique_lock
auf einem std::shared_mutex
es)
Was meinen Sie mit 'lock [_unique]()' die 'std :: lock' Funktion oder ein' std :: unique_lock'? – inf
nur die std :: shared_mutex.lock() Funktion – hauron
Dann denke ich, es wäre am besten, das einzigartige Teil zu entfernen? – inf