SORU
15 EYLÜL 2008, PAZARTESİ


İkili semafor ve dışlama arasındaki fark

İkili semafor ve ya essentialy aynı zaman uyumu arasında herhangi bir fark var mı?

CEVAP
17 EYLÜL 2008, ÇARŞAMBA


OnlarDEĞİLaynı şey. Farklı amaçlar için kullanılır!
Semafor iki tür dolu/boş bir devlet var ve aynı API kullanırken, kullanımları çok farklıdır.

Karşılıklı Dışlama Semafor
Karşılıklı Dışlama semafor paylaşılan kaynaklara (veri yapısı, dosya, vb.) korumak için kullanılır.

Zaman uyumu bir semafor "" görevi o alır. aittir Eğer Görev B zaman uyumu şu anda Bir Görev tarafından düzenlenen semGive çalışırsa, Görev B çağrı bir hata döndürür ve başarısız olur.

Uyumu her zaman aşağıdaki sırayı kullanır:

  - SemTake
  - Critical Section
  - SemGive

İşte bir örnek:

  Thread A                     Thread B
   Take Mutex
     access data
     ...                        Take Mutex  <== Will block
     ...
   Give Mutex                     access data  <== Unblocks
                                  ...
                                Give Mutex

İkili Semafor
İkili Semafor tamamen farklı bir soru adresi:

  • Görev B-bir şeyler olmasını (örneğin bir sensör takılıyor) bekliyorum beklemedeki.
  • Sensör Gezileri ve Kesme Hizmet Yordamı çalışır. Yolculuğun bir görev bildirmek gerekiyor.
  • Görev B çalıştırın ve sensör seyahatiniz için uygun önlemleri almak gerekir. Sonra geri bekliyor.

   Task A                      Task B
   ...                         Take BinSemaphore   <== wait for something
   Do Something Noteworthy
   Give BinSemaphore           do something    <== unblocks

İkili bir semafor ile, semafor ve onu vermek için Bir B almak için TAMAM olduğunu unutmayın.
Yine ikili bir semafor erişim bir kaynak koruma DEĞİLDİR. Ve bir semafor Alma, Verme eylemi temelden ayrılmış.
Genellikle bir ve aynı ikili bir al ver semafor yani aynı görev için pek bir anlam ifade etmiyor.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • DorkmanScott

    DorkmanScott

    14 NİSAN 2006
  • Simon Hayter

    Simon Hayter

    20 HAZİRAN 2010
  • WoodysGamertag

    WoodysGamert

    17 Aralık 2009