Đưa ra dưới đây:C++ 11: Điều gì sẽ xảy ra nếu bạn không gọi tham gia() cho std :: chủ đề
void test()
{
std::chrono::seconds dura(20);
std::this_thread::sleep_for(dura);
}
int main()
{
std::thread th1(test);
std::chrono::seconds dura(5);
std::this_thread::sleep_for(dura);
return 0;
}
main
sẽ thoát sau 5 giây, điều gì sẽ xảy ra với th1
mà vẫn thực hiện?
Sản phẩm có tiếp tục thực hiện cho đến khi hoàn thành ngay cả khi đối tượng chủ đề th1
bạn đã xác định trong main
vượt quá phạm vi và bị hủy không?
Có th1
chỉ đơn giản là ngồi ở đó sau khi hoàn thành việc thực hiện hoặc bằng cách nào đó được dọn sạch khi chương trình chấm dứt?
Điều gì sẽ xảy ra nếu chuỗi được tạo trong một hàm, không phải main
- luồng có nằm lại cho đến khi chương trình chấm dứt hoặc khi chức năng không nằm trong phạm vi?
Có an toàn để chỉ đơn giản là không gọi join
cho một chủ đề nếu bạn muốn một số loại hành vi thời gian chờ trên thread?
Tại sao bạn không thử? – Drop
@Drop Bởi vì đó không phải là cách đáng tin cậy để học về * đảm bảo *. – dyp
@dyp không yêu cầu trên Stackoverflow. Bằng cách biên dịch và chạy dòng chảy 5 dòng này, ít nhất anh ta có thể tìm ra manh mối. Chỉ có một nguồn đảm bảo - một tiêu chuẩn. – Drop