class ThreadGuard {
public:
ThreadGuard(std::thread &t_): t(t_) {}
~ThreadGuard()
{
if(t.joinable())
t.join();
}
private:
std::thread &t;
};
void func()
{
std::thread my_thread(f);
ThreadGuard thread_guard(my_thread);
}
ThreadGuard nesnesini, iş parçacığı, iş parçacığı normal olarak sona erene kadar çıkmayacağından emin olmak için kullanmayı denerim. Ancak, thread_guard nesnesi oluşturulmadan hemen önce bir istisna meydana gelirse ne olur?Değişken tanımı sırasında bir istisna ihtimali var mıdır?
İyi olmalı. Bir istisna atarsa, iplik yapısı başarısız demektir, daha sonra iş parçacığı çalıştırılmamalıdır, işlev çıkmalıdır. Doğru mu? – songyuanyao
** - 1 ** 'if (t.joinable)' ** ** gerçek kod değildir **. –
Üzgünüm, bir hata yaptım. Olmalı ise (t.joinable()) '. – song