Tôi đang chạy hàm Foo từ thư viện của người khác trong một ứng dụng đơn luồng. Hầu hết thời gian, tôi gọi điện cho Foo và nó thực sự nhanh chóng, một vài lần, tôi gọi Foo và phải mất mãi mãi. Tôi không phải là một người đàn ông bệnh nhân, nếu Foo sẽ mãi mãi, tôi muốn ngừng thực hiện Foo và không gọi nó với những lý lẽ đó.Tôi có thể tạo một chuỗi bộ đếm thời gian của bộ giám sát phần mềm trong C++ bằng cách sử dụng Boost Signals2 và Threads?
Cách tốt nhất để gọi Foo theo cách được điều khiển (môi trường hiện tại của tôi là POSIX/C++) sao cho tôi có thể ngừng thực hiện sau một số giây nhất định. Tôi cảm thấy điều đúng đắn cần làm ở đây là tạo ra một chuỗi thứ hai để gọi Foo, trong khi trong chủ đề chính của tôi, tôi tạo ra một chức năng hẹn giờ mà cuối cùng sẽ báo hiệu luồng thứ hai nếu nó hết thời gian.
Có mô hình apt và giải pháp nào khác không? Nếu không, thư viện Signals2 và Chủ đề của Boost sẽ thực hiện thủ thuật?
Chỉ cần làm rõ, 'timed_join' * sẽ không * chấm dứt 'Foo()' thực hiện chủ đề nếu thời gian chờ được đạt tới, như tôi nghĩ Aron đã yêu cầu cho. Thay vào đó, người gọi sẽ chỉ biết rằng chuỗi 'Foo()' vẫn đang chạy khi hết thời gian chờ. – pilcrow