SORU
26 HAZİRAN 2009, Cuma


Sahte wakeups aslında ne?

(Neredeyse) her zaman 'sahte wakeups çünkü döngü şart . bulma çeşitli kilitleme ile ilgili soru görmek ve ^sup>1Herkes bir uyanma bu tür (örneğin iyi bir donanım/yazılım ortamı varsayarak) yaşadı acaba?

Terim 'sahte' demek, belli bir sebebi yok ama bir olay bu tür için sebep ne olabilir?

(1Not: döngü pratik sorgulamıyorum.)

Düzenleme:(Kod örnekleri gibi olanlar için) yardımcı bir soru

Eğer aşağıdaki programı var, ve ben onu çalıştırın:

public class Spurious {
    public static void main(String[] args) {
        Lock lock = new ReentrantLock();
        Condition cond = lock.newCondition();
        lock.lock();
        try {
            try {
                cond.await();
                System.out.println("Spurious wakeup!");
            } catch (InterruptedException ex) {
                System.out.println("Just a regular interrupt.");
            }
        } finally {
            lock.unlock();
        }
    }
}

Ben sonsuza kadar rastgele bir olay beklemeden spuriously await uyanmak için ne yapabilirim?

CEVAP
27 HAZİRAN 2009, CUMARTESİ


Vikipedi article on spurious wakeups Bu can alıcı bir nokta vardır:

Linux pthread_cond_wait() işlevi futex sistem çağrısı kullanılarak uygulanır. Her engelleme sistemi süreci bir sinyal aldığında EINTR Linux döner aniden Ara. ... pthread_cond_wait() futex sistemi dışında bu kadar az süre içinde gerçek bir uyandırma Bayan olabilir çünkü bekleme yeniden diyemezsin. Bu yarış durumu, Tek bir değişmez için arayan kontrol ederek önlenebilir. POSIX bir sinyal, bu nedenle sahte bir uyandırma oluşturur.

Özet: Eğer Linux bir süreç sinyal bekliyor parçacıklarını güzel, sıcak bir zevk olacaktırsahte uyandırma.

Alıyorum. Bu genellikle belli belirsiz bir "performans" neden genellikle söz konusu. daha yutmak için daha kolay bir hap.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DJAndrewRyan

    DJAndrewRyan

    22 Ocak 2007
  • DragsterMC Gaming

    DragsterMC G

    30 HAZİRAN 2013
  • Ryan Ha

    Ryan Ha

    9 NİSAN 2006