Linux'ta okuma/yazma kilitlerini kullanıyorum ve okuma kilitli bir nesneyi bir yazma kilidi kilitlenmesini yükseltmeye çalışıyorum.pthreads: okuyucu/yazıcı kilitleri, okuma kilidini okuma kilidini yükseltme
yani
// acquire the read lock in thread 1.
pthread_rwlock_rdlock(&lock);
// make a decision to upgrade the lock in threads 1.
pthread_rwlock_wrlock(&lock); // this deadlocks as already hold read lock.
Ben adam sayfasını okudum ve oldukça spesifik var.
çağıran iş parçacığı ise azından okuma-yazma kilidi tutan çağrı yapıldığında zaman kilitlenmeye (ister bir okuma veya yazma kilidi).
ben koruyorum değişkeni bir yarış tanıtmak istemiyorum .. bu koşullarda bir yazma kilidi bir okuma kilidi yükseltmek için en iyi yolu nedir.
Muhtemelen okuma kilidinin bırakılmasını ve yazma kilidinin alınması için başka bir muteks oluşturabilirim ancak okuma/yazma kilitlerinin kullanımını gerçekten göremiyorum. Basit bir normal muteks kullanabilirim.
Thx
Boost.Thread, UpgradeLockable konseptine sahiptir, ancak kodunuz pthreads içinde zaten hip-derinse, bu sizin için çok fazla şüphe duymayacaktır. –
@Steve. Nasıl uygulandığını biliyor musun? Yapmayı düşündüğüm şey olan ayrı bir muteks kullanıyor mu? Sanırım onu indirip kontrol edebilirim: o) – ScaryAardvark
Hayır, Boost'u nasıl bilmiyorum.Onlar bunu yapıyor, üzgünüm. –