代码拉取完成,页面将自动刷新
同步操作将从 Julia语言程序设计/bookexamples 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
using Distributed
const jobs = Channel{Int}(32);
const results = Channel{Tuple}(32);
function do_work() # 消费者
for job_id in jobs # 用for循环从输入通道jobs中读取任务数据
exec_time = rand()
sleep(exec_time) # 用sleep模拟处理过程
put!(results, (job_id, exec_time)) # 将结果放入输出通道results中
end
end
function make_jobs(n) # 生产者
for i in 1:n
put!(jobs, i) # 往任务通道jobs中放入数据
end
end
n = 12;
@async make_jobs(n); # 将生产者加入任务调度中
for i in 1:4
@async do_work() # 异步地启动4个消费者,实现并行消费
end
@elapsed while n > 0 # 打印消费者执行后的结果
job_id, exec_time = take!(results); # 从结果通道中提取数据
println("$job_id finished in $(round(exec_time,digits=2)) seconds")
global n = n - 1
end
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。