【发布时间】:2014-10-09 17:03:05
【问题描述】:
我在正确使用线程时遇到问题 (boost::thread)
我想让 X 线程像这样同时运行相同的功能
while( true )
server.run();
这是我目前的编程方式,这是运行功能
void server::run()
{
std::vector<boost::thread*> threads;
for(std::size_t i = 0; i < threadPool; ++i)
{
threads.push_back( new boost::thread( boost::bind(&seed::server::pollEvent,this) ) );
}
for( auto & x : threads )
x->join();
for( auto & x : threads )
x->detach();
for( auto & x : threads )
delete x;
}
但是,这会占用越来越多的 RAM,从 ~20MB 开始一直到无穷大,我的问题是,正确的方法是什么?
Minimal example of what I'm actually doing
使用 SFML 的线程时不会出现此问题。 (CPU使用率略高,但不会为每个线程占用内存,它们会被正确清除)
【问题讨论】:
-
threadPool有多大? -
尝试创建一个最小的工作示例。这对潜在的帮助者非常有帮助,并且经常会在这样做时发现问题。
-
@SamMiller 4,我向你保证,这并不疯狂,应该处理得很好。
-
我认为这与您的问题无关,但您无法从已加入的线程中分离。
-
@MichaelBurr 不,它不相关。这只是我想在此处发布之前尝试的一件事。
标签: c++ boost boost-thread