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?
[expr.call]
belli bir üslup ortaya çıkmadı.)
CEVAP
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.)
İletişim atma "pencereyi simge bo...
Neden alloca kullanımı() olarak iyi bi...
Tam olarak "HİERARCHY_REQUEST_ERR...
'tavsiye simge dosya - paket iPho...
İyi ya da kötü bir uygulama mı? Alıcı ...