SORU
29 Aralık 2010, ÇARŞAMBA


Çoklu iş parçacığı ile uçucu ne zaman kullanılır?

Eğer iki iş parçacığı sonra global bir değişken erişim orada birçok dersler değişkeni derleyici bir deftere değişken önbelleğe alma önlemek için geçici yapmak ve böylece doğru güncelleştirilmiş almıyor ki. İki iş parçacığı, ancak her ikisi de ortak bir değişken eriştiği bir zaman uyumu ile koruma çağrısında bulunan bir şey değil mi? Ama bu durumda, arasındaki bağ, kilitleme ve serbest zaman uyumu kodudur önemli bir bölümünü tek bir iş parçacığı, giriş değişkeni, bu durumda değişken gerek yok geçici?

Bu nedenle kullanım/amaç çok iş parçacıklı bir program içinde değişken nedir?

CEVAP
29 Aralık 2010, ÇARŞAMBA


Kısa ve hızlı cevap: volatile (yaklaşık) platform-agnostik, çok iş parçacıklı uygulama programı işe yaramaz. Herhangi bir senkronizasyon sağlamaz, bellek çitler oluşturmaz, ne de operasyonlar yürütme düzeni sağlamak. Operasyon atom yapmaz. Kod sihirli iplik güvenli yapmaz. volatile C tüm tek-en çok yanlış anlaşılan odası olabilir . volatile hakkında daha fazla bilgi için this, this this bkz

Diğer taraftan, volatile çok açık olmayabilir bazı kullanın. const derleyici korumasız bir şekilde bazı paylaşılan kaynağa erişen bir hata yapıyor olabilirsiniz nerede göstermek yardımcı olmak için kullanmak istiyorsunuz aynı şekilde kullanılabilir. Bu kullanım this article Alexandrescu tarafından açıklanmıştır. Ancak, bu temelde genellikle bir araç olarak görülür bir şekilde C tipi sistemi kullanıyor ve Tanımsız Davranış uyandırabilir.

volatile özellikle küçültülmesi, işleyicileri ve setjmp makine kodu talimat donanım sinyal ile arabirim zaman kullanılmak üzere tasarlanmıştır. Bu volatile sistemleri seviyeli programlama yerine uygulama düzeyi normal programlama için doğrudan uygulanabilir yapar.

2003 C Standardı volatile değişkenler üzerinde Almak veya Serbest semantiği her türlü geçerlidir demiyor. Aslında, Standart çoklu tüm konularda tamamen sessiz. Ancak, belirli platformlar volatile değişkenler edinmesi ve Serbest semantik uygulanır.

[C 11 için güncelleme]

C 11 Standart artıkyokdoğrudan bellek modelinde çoklu ve Ankara kabul ve kütüphane imkanları platform-bağımsız bir şekilde bunu halletmek sağlar. Ancak volatile semantiği hala değişmedi. volatile hala eşitleme mekanizması değildir. Bjarne Stroustrup TCPPPL4E kadar " der

Doğrudan ilgilenen düşük seviye kod hariç volatile kullanmayın donanım ile.

volatile bellek modelinde özel bir anlamı var sanmayın. Bu değil. Daha sonra bazı diller bir yer olarak değil -- eşitleme mekanizması. Sto eşitleme, atomic kullan mutex condition_variable.

[/Bitiş güncelleme]

Yukarıdaki tüm 2003 Standart (ve şimdi 2011 Standart) tarafından tanımlanan C dili kendisi geçerlidir. Bazı belirli platformlar ancak volatile ne ek işlevsellik veya kısıtlama ekleyin. MSVC 2010 yılında örneğin, (en az) ve anlam Kazanırlar Bırakınyapınvolatile değişkenler üzerinde belirli işlemler için geçerli. From the MSDN:

En iyi duruma getirme derleyici başvurular arasında sıralama korumak gerekir uçucu nesneler gibi diğer küresel nesnelere başvurular için. İçinde özellikle,

Bir uçucu bir nesne (uçucu yazma) yazmak Serbest semantik; bir var bir yaz önce oluşan genel veya statik bir nesne için bir referans Yönerge sıra uçucu nesne daha önce ortaya çıkar uçucu derlenmiş ikili olarak yazın.

Uçucu bir nesne (uçucu okuma) okuma semantik; bir Elde etti bir okuyun sonra oluşan genel veya statik bir nesne için referans Yönerge sıra uçucu bellek sonra ortaya çıkar derlenmiş ikili uçucu oku.

Ancak, eğer yukarıdaki bağlantıyı takip ederseniz, hava veya serbest semantik elde değil gibi yorumlarda bazı tartışmalar olduğu gerçeğini dikkate almak isteyebilirsinizaslındabu durumda geçerli.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Kupa World

    Kupa World

    1 EYLÜL 2011
  • Lin Steven

    Lin Steven

    17 EKİM 2006
  • Thom Hall

    Thom Hall

    24 Kasım 2006