4463424 发表于 2021-9-6 12:13:03

请教下各位高手,多线程中的信号灯怎么使用?

本帖最后由 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:03

我感觉你的描述象线程池

kamikaze 发表于 2021-9-6 14:04:43

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

o 明白你的意思了
你弄一个整数数组变量和互斥锁 然后 按顺序将输出值加入数组
加入之前 判断 数组成员数,如果没成员不足 就等待输出

4463424 发表于 2021-9-6 14:56:45

kamikaze 发表于 2021-9-6 14:04
o 明白你的意思了
你弄一个整数数组变量和互斥锁 然后 按顺序将输出值加入数组
加入之前 判断 数组成员 ...

谢谢 你的回答!
我的理解是互斥锁好像是锁关键段,就只能让一个线程进入,其它线程在外面等着,谁先进不能确定。
不知道这样理解对不对

kamikaze 发表于 2021-9-6 16:14:59

对的

kamikaze 发表于 2021-9-6 16:15:52

如果 两个线程 同时修改一个变量 或者 同一个组件时 就会崩溃
互斥锁 就防止这个

网猫 发表于 2021-9-6 18:36:29

子线程用类可以解决冲突,类每次调用都是一个新的实体.

b0y 发表于 2021-9-6 18:56:58

信号灯原来设定同时运行的线程数量,设置为1个 就可以实现每个线程运行完毕在运行下一个线程

850536360 发表于 2021-9-6 19:56:38

当前线程等待上一个线程完成

4463424 发表于 2021-9-7 10:03:05

kamikaze 发表于 2021-9-6 16:15
如果 两个线程 同时修改一个变量 或者 同一个组件时 就会崩溃
互斥锁 就防止这个 ...

谢谢谢谢谢谢谢谢谢谢谢谢
页: [1] 2
查看完整版本: 请教下各位高手,多线程中的信号灯怎么使用?