C Boost线程睡眠死锁
我有以下代码的问题:
[LATER EDIT] 从main()我发出一个计算2秒的t1线程和另一个执行以下操作的线程:fork()在其中,父级等待子级,子级创建另一个也计数2秒的线程. 问题是如果我使用boost :: this_thread:sleep程序挂起或以某种方式死锁.如果我使用sleep(),那么它可以正常工作.我在这里做错了吗?这两者有什么区别? 从睡眠的男人页面我得到了: “sleep()使调用线程休眠直到秒秒或信号到达,但不会被忽略. 同样来自boost docs,boost :: this_thread :: sleep似乎做同样的事情. 最佳答案 你在这做危险的事情:fork调用复制整个程序,但只运行一个线程(当前一个) 在新的过程中.所以所有的互斥锁在这里,但只有一个线程. 如果某些线程锁定互斥锁并且您的线程尝试将其锁定在新进程中, 它将永远等待. 这里
如果看一下boost的包含文件,睡眠看起来像:
get_system_time从libc调用tz_convert,它接受mutex.看起来像叉之前另一个线程锁定它,并… (编辑:重庆站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 努比亚Z9什么时候发布 努比亚Z9发布时间公布
- linux – LVM:resize2fs没有调整大小
- linux – 如何使用expect命令创建else语句?
- 恒大金服怎么赚钱 恒大金服赚钱方法全解
- 魅蓝Note2怎么Root 魅族Note2Root教程
- 如何在 Ubuntu 20.04 上运用 Let s Encrypt 保护 Nginx
- 让TeXstudio在linux mint中工作:找不到文件`url.sty’.
- Linux作为路由器 – 如何确定使用哪条路由(取决于不同的源地
- 乐视X55和X55 pro的区别 乐视X55 pro和X55屏幕有什么区别
- 华为64位处理器麒麟620正式发布 主频1.2Ghz八核处理器