在增强线程中读取标志
Reading a flag in a boost thread
我是Boost编程中的新手。我要做的是从main()创建一个线程,该线程将连续运行直至main()退出。现在,我正在对该线程进行一些操作,完成后,它将设置一个布尔标志。Main()将等待设置此标志,当它是" true"时,Main()将完成其工作,重置标志并再次设置它。另一个线程将连续运行。
任何人都可以提供一组简单的提升线程说明来实现这一目标吗?
我试图在伪代码
中这样做class Call {
public:
bool flag, do_it;
keyboard_callback() {
if('s' pressed) do_it = true;
}
f() { // some callback function
if(do_it == true) flag=true;
}
void func() {
...register callback f()
...register keyboard_callback()
...
while(some condition) { keep running , exit when 'q'}
...
}
};
main()
{
Call obj;
boost::thread th (boost::bind(&Call::func, &obj));
th.detach();
while(true) {
while (obj.flag == false);
...do something
}
}
// shared variables
boost::mutex mutex;
boost::condition_variable condition;
bool flag = false;
// signal completion
boost::unique_lock<boost::mutex> lock(mutex);
flag = true;
condition.notify_one();
// waiting in main method
boost::unique_lock<boost::mutex> lock(mutex);
while (!flag) {
condition.wait(lock);
}
相关文章:
- 理解boost::asio-async_read在无需读取内容时的行为
- 使用新行和不使用新行读取文件
- 读取文件并输入到矢量中
- 用c++从输入文件中读取另一行
- 读取文件的最后一行并输入到链接列表时出错
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 无法找到/读取配置文件.conf-FileIOException
- 如何使用Luacneneneba API正确读取字符串和表参数
- C++将文本文件中的数据读取到结构数组中
- 正在将csv文件读取为双精度矢量
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- 为什么在读取文件大小时文件IO速度会发生变化
- 读取字符串直到标志 (C++)
- C++从 std::async 函数读取命名空间中的全局变量标志
- 在增强线程中读取标志
- 从带有MSG_PEEK标志的偏移处的套接字读取
- Qt读取访问在以下位置发生冲突:0x0,标志=0x0(第一次机会)
- gzgetc在读取最后一个字符时设置EOF标志
- 使用带有O_DIRECT标志的libaio读取文件
- 读取文件时避免错误标志