【发布时间】:2013-10-25 06:17:52
【问题描述】:
我在同步线程时遇到问题,我不知道该怎么做,有人可以帮助我吗?
所以,问题是我必须以特定的顺序启动线程。 顺序如下:
线程 1 和 7 可以同时运行,其中一个完成后,启动下一个线程(即线程 2 或/和线程 6),线程 3 和 5 也是如此。 最后一个,在线程 3 和 5 都运行完之后,进入最后一个,线程 4。
这是我开始的代码,但不知何故我被困在队列实现中。
MUTEX = Mutex.new
high_condition = ConditionVariable.new
low_condition = ConditionVariable.new
threads = []
7.times do |i|
threads << Thread.new{
MUTEX.synchronize {
Thread.current["number"] = i
you_shall_not_pass
}
}
end
threads.map(&:join)
def you_shall_not_pass
order = Thread.current["number"]
end
【问题讨论】:
-
你能告诉我们更多关于预期输出和你得到什么吗?
-
欢迎来到 StackOverflow!感谢您发布您的代码,但请在您的问题中添加更多描述:您遇到什么问题,您期望的结果是什么,到目前为止what have you tried?通过question checklist 将帮助我们更好地回答您的问题。谢谢!
-
预期的输出可能类似于: ` Thread1 已完成其任务 Thread2 已完成其任务 Thread7 已完成其任务 Thread3 已完成其任务 Thread6 已完成其任务 Thread5 已完成其任务 Thread4 已完成它的任务`输出并不重要,问题是以适当的方式启动它们
-
这是一个真正的要求,还是一些练习?
-
更多的练习,这将有助于以后的一些工作流程
标签: ruby multithreading mutex semaphore