gpt4 book ai didi

multithreading - 将任务添加到特定线程的队列中

转载 作者:行者123 更新时间:2023-12-05 05:36:53 25 4
gpt4 key购买 nike

我正在尝试指定在特定线程上运行任务,这样我就可以使用两个专用于“放入” channel 的耗时任务的线程,而其他线程则用于处理该任务。

我对如何将特定任务分配给特定线程感到困惑。我以为我可以使用类似 @spawnat 的东西,但这似乎不起作用。我写了下面的代码来说明我想要实现的目标

channel = Channel{Tuple{Int64, Int64}}(1000)

function stream()
# won't actually use this later, but
# easier to see what threads are used
for new_item in channel
println(new_item)
end
end

function cool_function(x::Int64)
sleep(1)
data = (Threads.threadid(), ~(x)+1)
put!(channel, data)
end

function spawner(x::Array{Int64})
for (i, number) in enumerate(x)
if iseven(i)
# Add to queue for thread X
Threads.@spawn cool_function(i)
else
# Add to queue for thread Y
Threads.@spawn cool_function(i)
end
end
end

@async stream()
spawner([1,2,3,4,5])

关于如何将任务添加到 spawner 中的特定线程队列的任何想法? :).像“添加到线程 1 的队列”

最佳答案

目前在 julia 级别没有用于访问调度程序以将任务分配给特定线程的 API,

但是包裹ThreadsPool.jl公开允许直接线程分配的宏 @tspawnat

关于multithreading - 将任务添加到特定线程的队列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73231637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com