Đôi khi tôi phải sử dụng std::thread
để tăng tốc ứng dụng của mình. Tôi cũng biết join()
chờ đợi cho đến khi một chủ đề hoàn thành. Điều này là dễ hiểu, nhưng sự khác biệt giữa gọi detach()
và không gọi nó là gì?
Tôi nghĩ rằng không có detach()
, phương thức của luồng sẽ hoạt động bằng cách sử dụng một luồng độc lập.
Không tách ra:
void Someclass::Somefunction() {
//...
std::thread t([ ] {
printf("thread called without detach");
});
//some code here
}
Gọi với tách ra:
void Someclass::Somefunction() {
//...
std::thread t([ ] {
printf("thread called with detach");
});
t.detach();
//some code here
}
std
và boost
chủ đề đã detach
và join
được mô hình chặt chẽ sau các chủ đề POSIX.