- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下线程池。
#include <queue>
#include <map>
#include <boost/shared_ptr.hpp>
#include <boost/asio/io_service.hpp>
#include <boost/thread/thread.hpp>
#include <boost/asio.hpp>
#include <boost/date_time/posix_time/posix_time.hpp> // remove me (only for io)
class ThreadPool
{
void run() {
// get some work from a task queue and then work on it
}
public:
void work_as_mainthread(void) { m_io_service.run(); }
ThreadPool(int poolSize = 4) : timer(m_io_service)
{
timer.expires_from_now(boost::posix_time::seconds(1));
m_pWork.reset( new boost::asio::io_service::work(m_io_service) );
for ( int i = 0; i < poolSize; ++i)
m_threadGroup.create_thread( boost::bind(&boost::asio::io_service::run, &m_io_service) );
}
private:
boost::asio::io_service m_io_service;
boost::asio::deadline_timer timer;
boost::shared_ptr<boost::asio::io_service::work> m_pWork;
boost::thread_group m_threadGroup;
};
int main()
{
int n_threads = 2;
ThreadPool pool(n_threads);
// add some tasks here...
pool.work_as_mainthread();
return 0;
}
这是一个最小的例子,完整代码 here .像这样编译:
g++ -Wall -g -lboost_thread -lboost_date_time -lboost_system main.cpp -o main
请注意,我没有调用 async_wait()(我不知道为什么我需要它,线程池到目前为止工作)。
现在,可能会发生这样的情况:一个任务突然要求在另一个任务超时之前完成另一个任务。告诉 m_io_service 立即执行处理程序的最佳方法是什么(即使计时器还不感兴趣),然后继续好像什么也没发生一样?我真的无法从稀疏的文档中找出答案。
这没有用:
timer.expires_at(boost::posix_time::microsec_clock::universal_time());
最佳答案
请注意,expires_at
仅设置 dealine_timer
到期时间,但不会“启用”计时器,因此不存在与计时器关联的异步操作。您应该调用 async_wait
并向其传递一个完成处理程序:当超时到期或计时器被取消时,将在关联的 io_service
线程之一中调用此处理程序。
调用 io_service::post
与 deadline_timer
无关。它只是将仿函数发送到 io_service
队列,io_service
会在其线程之一中尽快调用它。
关于c++ - 唤醒 asio 截止时间计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12119649/
我正在使用 Skrollr 插件,它在桌面上运行良好。但在 iPad 上,我的文档的高度被 chop 了。我尝试删除所有 skrollr 数据属性,但问题仍然存在,我注意到只需激活插件就会遇到此问题。
我正在使用顶部栏作为我的顶部导航设置一个新站点。我的代码在空白页面上运行,所以我知道菜单结构是正确的,但是当我将它集成到我的网站设计中时,下拉菜单被截断/隐藏在主要内容后面。 未剪裁: 剪辑: 最佳答
这个问题已经有答案了: Unknown Column In Where Clause (16 个回答) 已关闭 5 年前。 当我在 MySQL 中尝试这个时: select make,count(*)
当 navController 出现在 UIPopoverController 中时,我的 UIBarButtonItem 在导航栏中被截断。知道是什么原因造成的吗? 问题截图:http://www.
我是一名优秀的程序员,十分优秀!