C++创建线程池(如java)
我遇到了一个问题,我正在编写一个反黑客程序,但我不知道如何像java中的ThreadPool那样每x次重复一个函数。 我是这样想的:C++创建线程池(如java),c++,threadpool,C++,Threadpool,我遇到了一个问题,我正在编写一个反黑客程序,但我不知道如何像java中的ThreadPool那样每x次重复一个函数。 我是这样想的: while(true) { //Bad Procces its def before if(badprocces()) ExitApplication(1); } //Other code there while(true) { //Bad Procces its def before if(badprocces())
while(true)
{
//Bad Procces its def before
if(badprocces())
ExitApplication(1);
}
//Other code there
while(true)
{
//Bad Procces its def before
if(badprocces())
ExitApplication(1);
if(anotherCheck())
ExitApplication(1);
}
但是另一个代码不能运行,因为while不允许它
否则我会这样想:
while(true)
{
//Bad Procces its def before
if(badprocces())
ExitApplication(1);
}
//Other code there
while(true)
{
//Bad Procces its def before
if(badprocces())
ExitApplication(1);
if(anotherCheck())
ExitApplication(1);
}
但我想这不是最好的办法
这是可能的吗?像在java中一样创建调用线程池。
如何?哪个例子更好
另一个解决方案?更好的例子
好了,就这些。
感谢您的阅读和回复。如果您想要一个类似计时器的程序,您可以像这样轻松制作,但是我会将它封装在一个类中
std::atomic_bool go(true);
std::thread t([&](){
while(go){
do_work();
//wait (create a timer basically)
std::this_thread::sleep_for( std::chrono::milliseconds(5) );
}
});
//do stuff (or wait for user input)
go=false;
t.join();
如果您没有C++11支持,那么可以将boost替代方案用于lambdas
我不确定自动变量是否严格必要
应该注意的是,这不是一个线程池,而是一个使用wait循环的单个线程。如果您想要一个类似计时器的程序,您可以这样轻松地实现它,但是我会将它封装在一个类中
std::atomic_bool go(true);
std::thread t([&](){
while(go){
do_work();
//wait (create a timer basically)
std::this_thread::sleep_for( std::chrono::milliseconds(5) );
}
});
//do stuff (or wait for user input)
go=false;
t.join();
如果您没有C++11支持,那么可以将boost替代方案用于lambdas
我不确定自动变量是否严格必要
应该注意的是,这不是一个线程池,而是一个循环等待的单个线程。我完全不相信这个特定问题实际上需要一个线程池。。。 ... 但如果你想要一个,我鼓励你看看这个图书馆: 一些一般的经验法则: 如果你没有一个明确定义的任务,比如处理互联网下载,那么就不要使用线程 如果您可以阻止挂起直到某个事件发生,而不是在睡眠/检查循环中循环,则可以阻止。投票是邪恶的。阻塞是好的 你想要一个线程池的唯一原因是如果你希望很多小任务快速、随机地来来去去去。线程池的唯一真正优点是,通过将现有线程重新用于新任务,避免了创建和销毁线程的开销。在大多数情况下,通过简单地根据需要创建线程来简化代码的好处远远大于设置、管理和使用线程池的好处
我怎么…我一点也不相信这个特定的问题实际上需要一个线程池。。。 ... 但如果你想要一个,我鼓励你看看这个图书馆: 一些一般的经验法则: 如果你没有一个明确定义的任务,比如处理互联网下载,那么就不要使用线程 如果您可以阻止挂起直到某个事件发生,而不是在睡眠/检查循环中循环,则可以阻止。投票是邪恶的。阻塞是好的 你想要一个线程池的唯一原因是如果你希望很多小任务快速、随机地来来去去去。线程池的唯一真正优点是,通过将现有线程重新用于新任务,避免了创建和销毁线程的开销。在大多数情况下,通过简单地根据需要创建线程来简化代码的好处远远大于设置、管理和使用线程池的好处 我想