- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有这个简单的程序,它使用 boost 库在 1 秒内输出递增的整数:
#include <iostream>
#include <boost/thread/thread.hpp>
#include <boost/asio.hpp>
using namespace std;
void func1(bool* done)
{
float i=0;
while (!(*done))
{
cout << i << " ";
i++;
}
return;
}
void timer(bool* done, boost::thread* thread)
{
boost::asio::io_service io;
boost::asio::deadline_timer timer(io, boost::posix_time::seconds(1));
timer.wait();
*done = true;
return;
}
int main()
{
bool done = false;
boost::thread thread1(func1, &done);
boost::thread thread2(timer, &done, &thread1);
thread2.join();
thread1.join();
}
该代码的迭代有效,但是我最初是在 main 函数中定义的 bool 通过引用传递给函数 func1 和 thread。即:
void func1(bool& done) /*...*/ while (!(done))
/* ... */
void timer(bool& done, boost::thread* thread) /*...*/ done = true;
使用线程定义:
boost::thread thread1(func1, done);
boost::thread thread2(timer, done, &thread1);
当我那样执行它时,func1() 中的循环永远不会终止!我在 timer() 的返回处添加了一个断点,我的 IDE(MS VC++ express 2010)表明 bool done 确实具有 true 值,即使在 func1() 中也是如此。
关于为什么会发生这种情况的任何见解?
最佳答案
要通过引用传递参数,请使用 boost:ref
:
boost::thread thread1(func1, boost::ref(done));
关于c++ - 通过引用传递与通过指针传递 : Boost threads and deadline timer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16444544/
我们正在使用开发人员 python 指南和 Python 数据 2.15 库,并按照应用引擎的示例进行说明。createSite("测试站点一", description="测试站点一", sourc
我有go编写的grpc服务器和一个python客户端,有时会出现如下错误: eggs/grpcio-1.0.0-py2.7-linux-x86_64.egg/grpc/_channel.py\", l
我想在 C 中实现 DEADLINE 调度策略。我知道该功能自 Linux 3.14.10 开始实现。我正在使用 Ubuntu 14.04 Linux #### 3.17.0-031700-lowla
我编写了一个更新函数,但是多次执行将产生错误context deadline exceeded。 我的功能: func Update(link string, m bson.M) { conf
我有一个任务的预定开始日期和完成任务的工作量, 例如,在 N=5 以下的情况下,开始日期为 如何根据 scheduled_date+5days 自动计算截止日期? 最后我有以下内容: DEADL
我像这段代码一样使用 boost deadline_timer: boost::asio::io_service g_io; #define DEL(x) {delete x; x = NULL;}
我正在开发一个任务调度器,我想使用 EDF 调度。我需要安排的任务集仅包含截止日期等于其周期的任务,并且必须定期安排任务。我遇到的问题是任务一旦开始执行就不能中断。 我知道只有当任务被抢先安排在单个处
我正在发送一个带有指定 10 秒超时的上下文的请求: ctx, cancel := context.WithTimeout(context.Background(), time.Second * 10
我有一个提交给 ExecutorService 的任务列表。 .但是我需要在凌晨 2:30 的最后期限之前关闭 ExecutorService,即使任务没有完成。我怎样才能做到这一点?我检查了API,
我正在尝试在多个对等点之间实例化链码,每个对等点都在各自的组织中。出于调试目的,我创建了一个 channel testchannel只有一个组织overseer与单个对等 peer0 .我能够 创建
我正在尝试在Hyperledger Fabric示例中的测试网络中创建一个 channel : localhost:~/fabric-samples/test-network$ ./network.s
我有这个简单的程序,它使用 boost 库在 1 秒内输出递增的整数: #include #include #include using namespace std; void func1(bo
我正在研究 Linux IO 调度程序。 Linux Deadline IO Scheduler 使用“front_merges”属性来决定请求是前合并还是后合并。但我不明白它是如何工作的,因为它只在
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 10 年前。 Improve thi
在 Emacs 组织模式中,我知道我可以调用议程“匹配” View (使用 C-a m),然后使用以下搜索字符串查找截止日期设置为今天的所有 TODO 项目: DEADLINE="" 但是,我想在我的
工作节点正在进入“NotReady”状态, 的输出中出现错误kubectl 描述节点 : ContainerGCFailed rpc 错误:代码 = DeadlineExceeded desc = 超
我要查询的Firebase集合实际上是空的。内含零份文件。即使这样,当查询它时,我仍然收到此错误 我正在AWS的LAMBDA函数中执行此操作。我知道查询有效,因为它有时确实会返回结果,但是它是非常随机
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 4年前关闭。 Improve this
在使用 Dialogflow API 进行几次交易后,DEADLINE_EXCEEDED: Deadline Exceeded错误来了,在那之后我总是需要重新启动服务,然后它又开始工作了一段时间。即使
我想查找按小时和天分割的历史实际风和预报风。 我对一天中的某个时间有多个预报。我的第二天交易的交易截止日期为东部标准时间上午 10 点,因此我希望在此之前的最新预测与该小时的实际风在同一条线上。 使事
我是一名优秀的程序员,十分优秀!