问题:锁管理里边包含很多WorkQueueMgr的锁,我想批量去移除,比较多,一个一个移除比较慢
解决:查询所有的进程,过滤routine不包含某个routine的进程,进行终止
代码:
ClassMethod BatchTerminalProcessQuery()
{ Set Rset = ##class(%ResultSet).%New("%SYS.ProcessQuery:ListPids")
d Rset.Execute()
While Rset.Next() {
s CurrentLineAndRoutine=""
&sql(SELECT CurrentLineAndRoutine INTO :CurrentLineAndRoutine FROM %SYS.ProcessQuery WHERE Pid = :Rset.GetData(1))
continue:CurrentLineAndRoutine'[".WorkQueueMgr"
w CurrentLineAndRoutine,!
s pid=Rset.GetData(1)
s sc= $System.Process.Terminate(pid)
w sc,!
;w $ZU(4,pid,1)
}
d Rset.Close()
}