线程安全增加计数器变量

2020-09-07 05:46发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

您知道吗,有人知道在线程/线程中增加变量的安全方法(在这种情况下,IdM 7.2中是全局变量。)
在全局/公共JavaScript中。

如果我使用uGet ... Var和uSet ... Var,我会遇到可能的比赛条件,因为我没有拥抱这两个电话的信号灯。

感谢报酬

Ansgar

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


大家好,

您知道吗,有人知道在线程/线程中增加变量的安全方法(在这种情况下,IdM 7.2中是全局变量。)
在全局/公共JavaScript中。

如果我使用uGet ... Var和uSet ... Var,我会遇到可能的比赛条件,因为我没有拥抱这两个电话的信号灯。

感谢报酬

Ansgar

付费偷看设置
发送
5条回答
Haoba3210
1楼 · 2020-09-07 06:07.采纳回答

马特,你好

感谢您的想法。 我决定改用数据库序列。 这对开发人员来说不是那么透明,但是它很容易并且很安全。

骆驼绵羊
2楼-- · 2020-09-07 06:04

嗨安斯加尔,

不确定您的问题在这里。 在增加Global Vars时,我还没有看到任何问题,并且我已经在一些相当高的负载情况下做到了。

您能解释一下发生了什么吗,并包括您使用的IDM版本吗?

谢谢!

派大星 ヾ
3楼-- · 2020-09-07 06:10

嗨,马特,

我在全局javascript中使用全局计数器,如下所示

//获取全局var 
var numStr = uGetGlobalVar(" A_GLOBAL_VAR"); //增加值(只有符号代码,因为我们需要一些字符串转换) numStr ++; 用数字做某事 //设置全局变量 uSetGlobalVar(" A_GLOBAL_VAR",numStr);

此脚本是从不同的地方调用的,因此恰巧该脚本同时运行2次。

如果第二个调用者在第一个调用者调用A_GLOBAL_VAR之前获取A_GLOBAL_VAR,则两个调用者都使用相同的值,并且全局变量仅增加一次。

希望更清楚。

Alawn_Xu
4楼-- · 2020-09-07 06:21

可能是这样。

请注明您的恩质作为答案,以使线程被关闭。

Matt

太Q了
5楼-- · 2020-09-07 06:15

是的,我想是的。 这可能很难破解。但是我可以想到几种理论上都可以使用的方法,但这可能会为您提供一些有用的方法。

1。 在更新变量的每个任务之后,请暂停/休眠以允许其他进程停止。 这可能无法缩放。

2。 您是否可以使用属性或创建某种标志,该标志可以供进程使用以查看其是否已"签出",并等待其清除后再继续? 标记的值可能需要是日期/时间戳。

不太确定如何设置这些标记,不幸的是,目前我没有足够的带宽来制作类似这样的东西,但是也许 它将为您或社区中的其他人激发一个想法。

一周热门 更多>