-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
是否可以添加SubmitQueue类似的接口 #55
Comments
是我理解有误吗?你这不是串行任务吗?那为什么要用并发来处理,如果是串行的用并发没意义啊,直接单线程处理。 |
一个例子: |
用户场景我了解了,但是你期待的解决方案我不是清楚,能具体描述一下吗?或者贴点伪代码看看? 另外,下次提 issue 不要删掉模板自己写,麻烦按照我现在设置的模板填写,这样把需求一次性写清楚可以节省很多反复沟通的时间:
|
刚才点错了不小心关掉了,忽略。。。 |
目前没用ants,需要自己管理队列,需要起很多goroutine for{
packet=recv(con)
switch packet.Type{
case A:
go processA(con,packet)
case B:
go processB(con,packet)
......
}
func processA(con,packet){
queuename:=calc_queuename(con,A)
put_packet_in_queue(queuename,packet)
lock_queue(queuename)
front_packet:=pop_packet_from_queue(queuename)
actual_processingA(front_packet)
unlock_queue(queuename)
}
func processB(con,packet){
queuename:=calc_queuename(con,B)
put_packet_in_queue(queuename,packet)
lock_queue(queuename)
front_packet:=pop_packet_from_queue(queuename)
actual_processingB(front_packet)
unlock_queue(queuename)
} 如果有SubmitQueue,可以简化如下: for{
packet=recv(con)
switch packet.Type{
case A:
ants.SubmitQueue(calc_queuename(con,A),func(){
actual_processingA(packet)
}
case B:
ants.SubmitQueue(calc_queuename(con,B),func(){
actual_processingB(packet)
}
......
} |
我看完你这代码,你是想让 另外,你这种需求完全可以自己封装一个带锁的队列,其实也不麻烦的,你看你贴的代码里,其实相比较起简化的版本也就多了入队和出队的操作(加锁),这个跟你用不用 |
现在submit的任务执行顺序可以认为是随机的,但是有应用的情况是处理数据时有顺序关系,用户可以用队列来处理此类任务,但是每个task handler中都增加了队列的代码,感觉还是有点累赘。
如果ants有SumbitQueue(queueName interface{}, task func())error 这样的接口,则使用起来感觉方便很多
The text was updated successfully, but these errors were encountered: