如果你有一个保存的线程ID(使用boost :: thread :: get_id()函数获得),你如何检查该线程当前是否正在运行?检查有效的线程
检查有效的线程
回答
不知道如果这有帮助,但是如果你存储一个指向boost :: thread的指针,你可以查询boost::thread::joinable?
if (thread->joinable() && ! thread->timed_join(**zero_time here**)) {
/* still running */
} else {
/* not running */
}
你不能这样做,至少不能移动。
您需要设置线程在结束之前写入的共享变量。该变量可以被其他线程读取以确定目标线程的状态。你需要将这个变量与原子或互斥体同步。
我想我正在尝试做一些我不应该从面向对象的角度来做的事情。我试图从一个线程(不是主线程)中访问有关其他线程的信息,这看起来并不聪明。其他答案假设我有线程的句柄(请参阅上面的我的评论)。 – tinc 2011-04-07 18:47:05
除了编程原理,thread :: id只是没有你要找的API。你所能做的只是比较一个线程:: id到另一个线程。通过与一个本地静态线程:: id进行比较,它主要用于检查一个函数是否连续两次运行相同的线程。但是可以创建一个映射
- 1. 检查直线形状的有效性
- 2. 检查有效URL
- 3. 检查存储过程是否有效
- 4. Qt检查有效的URL
- 5. 检查有效的指针
- 6. 检查有效的guid
- 7. 检查有效的HTML C#
- 8. 检查有效的IMEI
- 9. 检查URL的有效性
- 10. 检查有效的gravatar(PHP)
- 11. 最有效的线程数?
- 12. C#多线程在for循环,如何检查所有线程
- 13. 角2路线检查,如果PARAMS包含有效的值
- 14. 检查有效图像
- 15. 输入有效性检查
- 16. 有效检查字符?
- 17. 数据有效性检查
- 18. 检查有效链接(URL)
- 19. 检查有效输入
- 20. python检查html有效
- 21. 检查cherrypy是否有效
- 22. 检查BitmapData是否有效
- 23. 多线程代理检查
- 24. Android线程ID检查
- 25. 多线程与检查
- 26. 检查线程时间
- 27. 死锁线程检查
- 28. 检查远程URL是否有有效的图像扩展
- 29. 检查线路是否有效在Java中
- 30. 检查有效的URL,URI的构建
您对“当前运行”的定义是什么? – Bahbar 2011-04-07 16:23:59
你想通过编程或者通过工具来完成吗? – karlphillip 2011-04-07 17:15:00
我是新来的助手,所以有时我甚至不知道要问的正确问题。 “运行”是指具有特定id的线程是否已完成其处理(例如,如果您将该函数传递给函数 - 一旦该函数退出)。我希望这个答案对你的问题有意义。我可能错过了一些东西。我希望能够以编程方式保存一个ID(因为我可以从一个线程中获取该ID),然后稍后检查该ID以查看该线程是否已完成。下面的其他答案假设我已经有一个句柄(我不这样做)。 – tinc 2011-04-07 18:45:56