[问题] thread运作

楼主: x246libra (楓)   2018-05-25 16:46:10
开发平台(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
作者: elements (Helianthus annuns)   2018-05-25 16:51:00
看不懂问题一…问题二:在func1结尾的地方呼叫func2你没有办法把一个函数塞到thread里面,除非叫他自己去抓。所以要不就是把func1和2一起包成三 不然就是做event queue,或简单一点用个判断式或function pointer第一个问题用个cond variable吧
作者: stupid0319 (征女友)   2018-05-26 00:41:00
把func2剪下贴上到thread的func1之后
作者: megawalker (小智猫)   2018-05-26 01:46:00
楼上正解XD
作者: waiting1102 (夜不眠)   2018-05-27 11:21:00

Links booklink

Contact Us: admin [ a t ] ucptt.com