递归火山软件开发平台

标题: 请教下各位高手,多线程中的信号灯怎么使用? [打印本页]

作者: 4463424    时间: 2021-9-6 12:13
标题: 请教下各位高手,多线程中的信号灯怎么使用?
本帖最后由 4463424 于 2021-9-6 15:05 编辑

请教下各位高手,多线程中的信号灯怎么使用?
我想实现同时启动10个线程(10个线程的计算量不等),10个线程按调用顺序输出值,好像信号灯可以控制顺序,就是不知道怎么用,请高手指点下,谢谢!!!!!
例:
计次循环 (10)
启动线程 (子线程, 取循环索引 ())

子线程(1):10s完成
子线程(2):3s完成
子线程(3):20s完成
子线程(4):1s完成子线程(5):18s完成
子线程(6):1s完成
子线程(7):10s完成
子线程(8):12s完成
子线程(9):5s完成
子线程(10):50s完成

我想让10个线程排队运行, 子线程(1)>子线程(2)>子线程(3)>子线程(4)>子线程(5)>子线程(6)>子线程(7)>子线程(8)>子线程(9)>子线程(10)





作者: kamikaze    时间: 2021-9-6 14:02
我感觉你的描述象线程池
作者: kamikaze    时间: 2021-9-6 14:04
kamikaze 发表于 2021-9-6 14:02
我感觉你的描述象线程池

o 明白你的意思了
你弄一个整数数组变量和互斥锁 然后 按顺序将输出值加入数组
加入之前 判断 数组成员数,如果没成员不足 就等待输出
作者: 4463424    时间: 2021-9-6 14:56
kamikaze 发表于 2021-9-6 14:04
o 明白你的意思了
你弄一个整数数组变量和互斥锁 然后 按顺序将输出值加入数组
加入之前 判断 数组成员 ...

谢谢 你的回答!
我的理解是互斥锁好像是锁关键段,就只能让一个线程进入,其它线程在外面等着,谁先进不能确定。
不知道这样理解对不对
作者: kamikaze    时间: 2021-9-6 16:14
对的
作者: kamikaze    时间: 2021-9-6 16:15
如果 两个线程 同时修改一个变量 或者 同一个组件时 就会崩溃
互斥锁 就防止这个
作者: 网猫    时间: 2021-9-6 18:36
子线程用类可以解决冲突,类每次调用都是一个新的实体.
作者: b0y    时间: 2021-9-6 18:56
信号灯原来设定同时运行的线程数量,设置为1个 就可以实现每个线程运行完毕在运行下一个线程
作者: 850536360    时间: 2021-9-6 19:56
当前线程等待上一个线程完成
作者: 4463424    时间: 2021-9-7 10:03
kamikaze 发表于 2021-9-6 16:15
如果 两个线程 同时修改一个变量 或者 同一个组件时 就会崩溃
互斥锁 就防止这个 ...

谢谢谢谢谢谢谢谢谢谢谢谢
作者: 4463424    时间: 2021-9-7 10:05
网猫 发表于 2021-9-6 18:36
子线程用类可以解决冲突,类每次调用都是一个新的实体.

谢谢谢谢谢谢谢谢谢谢谢谢
作者: 4463424    时间: 2021-9-7 10:18
b0y 发表于 2021-9-6 18:56
信号灯原来设定同时运行的线程数量,设置为1个 就可以实现每个线程运行完毕在运行下一个线程 ...

谢谢谢谢谢谢谢谢谢谢谢谢
作者: 4463424    时间: 2021-9-7 10:22
850536360 发表于 2021-9-6 19:56
当前线程等待上一个线程完成

谢谢谢谢谢谢谢谢谢谢谢谢




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4