SORU
19 ŞUBAT 2015, PERŞEMBE


C 11 vadeli işlemler kullanarak: std çağrı::iç İçe geçmiş zaman uyumsuz kaza: Derleyici/Standart kütüphane bug?

Std iç içe geçmiş aramalar tanıtan çöküyor yaşadıktan sonra::benim gerçek program uyumsuz, aşağıdaki sorunu yeniden oluşturmak için başardıminimum örnek. Genellikle, her zaman olmasa da çöker. Yanlış giden ne bir şey görebiliyor musun, yoksa derleyici veya standart kitaplık bir hata mı? Sorun olursa gelecekleri için 1 ** çağrı eklenirse kaldığına dikkat edin.

#include <future>
#include <vector>

int main (int, char *[])
{
    std::vector<std::future<void>> v;
    v.reserve(100);
    for (int i = 0; i != 100;   i)
    {
        v.emplace_back(std::async(std::launch::async, [] () {
            std::async(std::launch::async, [] { });
        }));
    }

    return 0;
}

Çöker iki farklı görüyorum:(yaklaşık her beşinci vadede)

  • Fesih ile"Bu uygulama alışılmadık bir şekilde sonlandırmak için çalışma Zamanı istedi."
  • Örneği atma sonra ermesi< . em^':: future_error std' ne(): Söz zaten memnun.

Çevre:

  • Windows 7
  • gcc sürümü 4.8.2 tarafından (posıx-i686 cüce-rev3, İnşa Qt 5.3.2 tarafından sunulan MinGW-W64 projesi)
  • Komut satırı Ara: g -std=c 11 -pthread futures.cpp
  • Derlenmiş ve iki bağımsız makinelerde çalıştırmak

Seçeneği -pthread? Nedense benim ortamda seçeneği -pthread sessizce dikkate alınmamış olabilir mi? Bu seçenek olmadan ve aynı davranışı görüyorum.

CEVAP
25 NİSAN 2015, CUMARTESİ


Bu cevap hala"," Lounge<C >, bazı insanlarla konuşurken yorumlar bunun çok açık olduğunu söyleyebilirim . sonra cevapsız beri ^strong>bu uygulama, bir hata ya da zaman MinGW/MinGW-w64 ya pthread parçası nedeniyle.Gcc 4.9.1, MinGW-W64, sorun kullanarak artık görünmüyor. Aslında yukarıdaki program ve doğru bile bir sürümünü çalıştırmak için görünürdaha öncePOSIX parçacığı ile daha 4.8.2.

Ben bir uzman değilim, benim tahminim tam bir gezi olur program görünür denemek için yazmak için aynı sözü iki kez, hangi, bence, olmalı bir büyük hayır-hayır, bir std::uyumsuz gerektiğini yazmak onun sonucu sadece bir kez (yine emin değilim eğer ben buradayım ve diğer yorumlar ve düzenlemeler olacak büyük ihtimalle açıklığa kavuşturmak).

Ayrıca, bu ilgili bir sorun olabilir: std::future exception on gcc experimental implementation of C 0x

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bryan Adams

    Bryan Adams

    30 Mart 2006
  • DJAndrewRyan

    DJAndrewRyan

    22 Ocak 2007
  • Joe DiFeo

    Joe DiFeo

    7 AĞUSTOS 2012