Başka bir sınıf üyesini birden çok kez paralel olarak çağıran bir sınıf üyesi yazmayı deniyorum.Sınıf ve std :: C++ sınıf üyesindeki async
Sorunun basit bir örneğini yazdım ve bunu derleyemiyorum bile. Std :: async çağrısı ile ne yapıyorum? Sanırım sorun, işlevi nasıl geçtiğimle ilgili olurdu.
#include <vector>
#include <future>
using namespace std;
class A
{
int a,b;
public:
A(int i=1, int j=2){ a=i; b=j;}
std::pair<int,int> do_rand_stf(int x,int y)
{
std::pair<int,int> ret(x+a,y+b);
return ret;
}
void run()
{
std::vector<std::future<std::pair<int,int>>> ran;
for(int i=0;i<2;i++)
{
for(int j=0;j<2;j++)
{
auto hand=async(launch::async,do_rand_stf,i,j);
ran.push_back(hand);
}
}
for(int i=0;i<ran.size();i++)
{
pair<int,int> ttt=ran[i].get();
cout << ttt.first << ttt.second << endl;
}
}
};
int main()
{
A a;
a.run();
}
derleme: (. Örtülü this
parametresi)
g++ -std=c++11 -pthread main.cpp
Geçiş '* this' async'' üçüncü parametre olarak. – Xeo
Derlemede veya bağlantıda hata yaparsanız, söz konusu hataları söz konusu olmak üzere tercihen verbatim olarak eklemeniz iyi olur. –
Artık C++ 11 ile pthread kullanmanıza gerek yok :) Thats C++ 11 (threading) içindeki en büyük katkılardan biri. Eşzamansız başlatma ve açık iş parçacığı da dilin kendisinde ise, async() örtük bir iş parçacığıdır. – siddhusingh