SORU
18 Kasım 2012, Pazar


C bir uygulama, teorik olarak, iki işlevin bağımsız değerlendirme parallelise olabilir?

Verilen aşağıdaki işlev çağrısı:

f(g(), h())

işlevin bağımsız değerlendirme sırasını belirsiz (hala C 11 durumda kadarıyla farkında değilim) olduğu için, bir uygulama teorik olarak paralel g() h() yürütebilir?

Böyle bir parallelisation tek vuruş vardı g h tanınan oldukça önemsiz (en bariz örneği, erişim yalnızca yerel veri için vücutlarını) olarak tanıtmak eşzamanlılık sorunları ancak, bunun ötesinde kısıtlama göremiyorum hiçbir şeyi yasaklar.

Standart buna izin veriyor mu? -Eğer kural tarafından bile sadece?

(this answer, Mankarse iddia aksi; ancak, standart açıklamadığı, ve benim-okuyun [expr.call] belli bir üslup ortaya çıkmadı.)

CEVAP
18 Kasım 2012, Pazar


Gereksinimi [intro.execution]/15 gelir:

... Bir işlevi çağrılırken ... aksi özellikle veya çağrılan işlev vücudun idamdan önce, sonra sıralı olduğu arama fonksiyonu (diğer işlev çağrıları da dahil olmak üzere) Her bir değerlendirmeindeterminately sıralıçağrılan işlev yürütme açısından [Dipnot:Başka bir deyişle, işlev infaz birbirleriyle aralığı.].

Yani herhangi bir yürütme vücudun g() olmalı indeterminately sıralı ile (örtüşmeyen) değerlendirme h() (h() ifade arama işlevi).

Kritik nokta burada g() h() her iki işlev çağrıları vardır.

(Tabii ki,-eğer kural olasılığı tamamen göz ardı edilemez, ama asla bir programın gözlemlenebilir davranışlarını etkileyebilecek bir şekilde gerçekleşmesi gerektiği anlamına gelir. En azından, böyle bir uygulama sadece kod performans özellikleri değiştirmek istiyorsunuz.)

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • David MeShow

    David MeShow

    10 EKİM 2006
  • Orson Wang

    Orson Wang

    28 EKİM 2006
  • waterfairy17

    waterfairy17

    9 Aralık 2007