SORU
25 Mart 2009, ÇARŞAMBA


Ben've't parçacığı güvenli değil duydum güvenli iş parçacığı?

Duydum bunu ben değil, bir iş parçacığı için güvenli deyimi beri Meclis düşürür depolama orijinal değeri olarak geçici bir yere, artan, ve sonra yerine, hangi olabilir kesintiye tarafından bir bağlam anahtarı.

Ancak, ben merak ediyorum. Bildiğim kadarıyla söyleyebilirim, bu azaltmak için bir tek montaj talimatı gibi 'add r1, r1, 1' ve o zamandan beri sadece bir talimat, olur kesintisiz bir bağlam anahtarı.

Kimseye açıklamak miyim? X 86 platformu kullanılmakta olduğunu varsayıyorum.

CEVAP
25 Mart 2009, ÇARŞAMBA


Yanlış duymuşsundur. İyi "i " güvenli iş parçacığı belirli bir derleyici ve belirli bir işlemci mimarisi için olabilir ama hiç standartlar zorunlu değil. Aslında, çoklu beri ISO C standardının bir parçası değildir(a)hiçbir şey güvenli iş parçacığı için derleme aşağı olacağını düşünüyorum Ne dayalı olarak kabul edemezsin.

i keyfi bir dizi gibi derlemek için gayet uygun

load r0,[i]  ; load memory into reg 0
incr r0      ; increment reg 0
stor [i],r0  ; store reg 0 back to memory

-güvenli iş parçacığı bellek arttırma talimatları içeren (hayali) benim CPU olmaz. Ya akıllı olun ve derlemek olabilir:

lock         ; disable task switching (interrupts)
load r0,[i]  ; load memory into reg 0
incr r0      ; increment reg 0
stor [i],r0  ; store reg 0 back to memory
unlock       ; enable task switching (interrupts)

lock * * * * devre dışı bırakır ve unlock kesmelerini sağlar. Ama o zaman bile, bu güvenli iş parçacığı bu CPU bellek paylaşımı (lock Tek bir CPU için kesmeler devre dışı bırakabilir) birden fazla olan bir mimari olmayabilir.

Dilin kendisi (veya kütüphaneler için, değil inşa halinde dili) sağlar, iş parçacığı için güvenli yapıları ve kullanmalısın, o yerine bağlı anlayış (ya da belki yanlış anlama) ne makine kodu oluşturulur.

İçine bakmak için gereken ne Java synchronized pthread_mutex_lock() () bazı işletim sistemleri altında C/C kullanılabilir gibi şeyler vardır(a).


(a)Bu soruyu C11 ve C 11 standartlar tamamlanmıştır önce soruldu. Bu yineleme şimdi dil özellikleri, atom veri türleri de dahil olmak üzere (bunlar ve genel vardır . iş parçacığı olsa içine parçacığı desteği girmiştik ^em>isteğe bağlıen azından C).

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MyTiredBones

    MyTiredBones

    2 Temmuz 2013
  • SoundHound

    SoundHound

    8 Mart 2006
  • thepoke64738

    thepoke64738

    17 HAZİRAN 2011