作者x246libra (宸火)
看板C_and_CPP
标题[问题] thread运作
时间Fri May 25 16:46:10 2018
开发平台(Platform): (Ex: Win10, Linux, ...)
win10
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
gcc
问题(Question):
问题1.
func1在另外创造的thread执行
func2在main执行
不使用pthread_join等待
问题2.
如果想要将func2也丢到 与 func1同样的thread应该怎麽做?
而且要func1执行完 才执行func2
预期的正确结果(Expected Output):
问题1.
func1 输出 1~10
func2 输出 a~j
预期输出每次都会不太一样
1~10 a~j 可能混合在一起 可能依序排列
但最後一个输出 一定为 j
问题2.
想不到怎麽做
请教有什麽作法
错误结果(Wrong Output):
问题1.
最後一个输出 不一定为j
func2一定可以执行完成
疑问是 func2 执行结束
main的thread应该也结束了
为什麽j都输出了 func1还是会跑?
既然会跑 为什麽 不会输出到10?
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
https://pastebin.com/ixYbTdjZ
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 61.220.35.157
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1527237972.A.3F1.html
1F:→ elements: 看不懂问题一…问题二:在func1结尾的地方呼叫func2 05/25 16:51
问题2 算是我实际遇到的问题 只是将其简化
限制 不能在func1的结尾 呼叫func2
有办法解决问题2吗?
※ 编辑: x246libra (61.220.35.157), 05/25/2018 16:57:40
2F:→ elements: 你没有办法把一个函数塞到thread里面,除非叫他自己去 05/25 17:03
3F:→ elements: 抓。所以要不就是把func1和2一起包成三 不然就是做even 05/25 17:03
4F:→ elements: t queue,或简单一点用个判断式或function pointer 05/25 17:03
5F:→ elements: 第一个问题用个cond variable吧 05/25 17:08
6F:推 stupid0319: 把func2剪下贴上到thread的func1之後 05/26 00:41
7F:推 megawalker: 楼上正解XD 05/26 01:46