Döngüde uyumsuzluğu kullanmak istediğim bir program üzerinde çalışıyorum. İçerdiğim örnek kodda sadece 10 öğe var, bu yüzden her öğe için kolayca bir değişken oluşturabilirim. Ancak, ana programımda, vektördeki elemanların sayısı değişebilir. İdeal olarak, asenkron iş parçacıklarının bir vektörünü oluşturmak istiyorum - dizideki her eleman için bir tane - ki ben döngüsel vektörde geri dönerken tekrar dönüyorum. Sonra hepsini tamamlamak için beklemek istiyorum ve sonra kullanıyorum " tüm çıkışlarını geri almak için()C++ 11 ile değişken sayıda asenkron iş parçacığı sayısı
aşağıda kodu, her iş parçacığı için açık bir değişken atayarak asenk arayacak ama kimse dinamik açıkça bunun için bir değişken atamak zorunda kalmadan bir vektör içinde uyumsuz çağrı nasıl biliyor? İdeal olarak, bu programın her seferinde bir kez değil, bir kez yerine "std :: cout" adını vermesini istiyorum.
#include <iostream>
#include <vector>
#include <string>
#include <future>
std::string hi (std::string input)
{
return "hello, this is " + input;
}
int main()
{
std::vector<std::string> test_vector(10, "a test");
std::future<std::string> a;
std::future<std::string> b;
for (int i = 0; i < test_vector.size (); i++)
{
a = std::async(std::launch::async, hi, test_vector[i]);
}
std::cout << a.get() << std::endl;
return 0;
}
Ve sorunun ne olduğunu tam olarak nedir? – Columbo
Açıkça bir değişken oluşturmak zorunda kalmadan döngü geçirildiğinde her zaman uyumsuz olarak nasıl çağrılır? –
Yukarıda yazılı olan kodun ciddi bir kusuru vardır, her bir yeni atamayı atadığınız zaman, 'a' bunu engellemek ve eski değeriyle ilişkilendirilen iş parçacığının bitmesini beklersiniz, bu nedenle seri olarak etkili bir şekilde çalışıyorsunuzdur. Her neyse, dinamik bir dizi geleceğin çözümünün tamamen açık olmadığını şaşırıyorum: Her yeni geleceği bir vektör gibi dinamik büyüklükte bir konteynırda saklayın. Kendiniz de söylediniz: _ "Asenkron iş parçacıklarının bir vektörünü oluşturmak istiyorum - dizideki her eleman için bir tane - ki bunlar async vektörüne geri döndüğümde geri itiliyor." yap bunu! –