【发布时间】:2023-03-23 01:49:01
【问题描述】:
我在内存中有一个array(nodejs 服务器端),我每 10 秒更新一次,客户端也每 10 秒执行一次请求。该请求解析array 以获取特定字符串格式。此外,更新过程在setInterval 函数中。
我想对该端点进行压力测试。我认为如果我将解析array 到字符串的过程移动到我正在更新array 的位置,那么服务只会返回一个字符串(如缓存)并且压力测试不会成为问题通过.
在这里,我的问题是:如果更新我的array 和解析所需的时间很长,直到为缓存的字符串分配新值,那么客户端将从服务接收到不正确的值,因为它继续更新。所以我的问题是如何确保客户始终收到正确的值。也就是说,在这种情况下如何避免竞争条件。
【问题讨论】:
-
更新
array并将其“解析”为字符串是一个同步函数,对吧?在这种情况下,不存在竞争条件:客户端请求要么在此之前发生(并将获得旧结果),要么在更新之后发生(并将获得新结果)。
标签: javascript node.js race-condition