我对C++11中的线程编程还不熟悉,想知道如何使用标准库来管理工作线程,让它们执行某些任务并最终结束。我有一个线程池 vector<thread *> thread_pool
,用于维护活跃线程列表。
假设我启动一个新线程,并将其添加到线程池中,使用 thread_pool.push_back(new thread(worker_task))
,其中worker_task
定义如下:
void worker_task()
{
this_thread::sleep_for(chrono::milliseconds(1000));
cout << "Hello, world!\n"
}
工作线程终止后,最可靠的方式是什么来从池中移除该线程?主线程需要持续运行,不能阻塞在join
调用上。我比同步细节更关心代码的一般结构。
编辑:看起来我在代码中误用了池的概念。我的意思只是有一个正在运行的线程列表。