Şu anda soket sunucusundan bazı görüntüleri indirmek için gereken bir program geliştiriyorum ve indirme işi uzun bir süre yürütecek. Bu yüzden bunu yapmak için yeni bir std::thread
oluşturun.std :: thread nasıl sonlandırılır?
Bir kez indirildikten sonra, std::thread
geçerli Sınıfın bir üyesi işlevini çağıracak, ancak bu Sınıfın büyük olasılıkla piyasaya sürülme olasılığı yüksektir. Yani bir istisna aldım.
Bu sorun nasıl çözülür?
void xxx::fun1()
{
...
}
void xxx::downloadImg()
{
...a long time
if(downloadComplete)
{
this->fun1();
}
}
void xxx::mainProcees()
{
std::thread* th = new thread(mem_fn(&xxx::downloadImg),this);
th->detach();
//if I use th->join(),the UI will be obstructed
}
Yığın Taşmasına Hoş Geldiniz! Sorunu, senin problemini tahmin edebildiğim kadar düzenledim. Bununla birlikte, kodun ve açıklamanın açıklamalarını ekleyin, böylece konu hakkında daha fazla kişi bunu görecektir. Lütfen belirli bir sorunu tanımlamak için gerekli olan karşılaştığınız belirli bir hata mesajını düzenleyin. İyi şanslar! – manetsus
Neden bir "std :: future" kullanıyorsunuz? –
Superlokkus
[C++ 0x iş parçacığı kesintisi] olası kopyası (http://stackoverflow.com/questions/2790346/c0x-thread-interruption) – kfsone