当前位置: 首页 > 面试题库 >

锁在物体上?

范瀚昂
2023-03-14
问题内容

我是Node.js的新手,我敢肯定对此有一个简单的答案,我只是找不到它:(

我正在使用文件系统来保存“程序包”(状态扩展名为“ mypackage.idle”的文件夹),用户可以对这些程序执行操作,这将导致状态变为“
qa”或“部署”等。如果服务器正在接受大量请求,并且同一包中有多个请求,我将如何检查状态,然后执行一个操作,这将更改状态,从而确保在操作之前/期间另一个请求没有更改它发生?

所以在C#中像这样

lock (someLock) { checkStatus(); performAction(); }

谢谢 :)


问题答案:

如果checkStatus()和performAction()是一个接一个被调用的同步函数,那么就像前面提到的那样:它们的执行将不中断地运行直到完成。但是,我怀疑实际上这两个函数都是异步的,组成它们的现实情况是这样的:

function checkStatus(callback){
  doSomeIOStuff(function(something){
    callback(something == ok);
  });
}

checkStatus(function(status){
  if(status == true){
    performAction();
  }
});

上面的代码受竞争条件的影响,因为当执行doSomeIOStuff而不是等待它时,可以满足新的请求。

您可能要检查https://www.npmjs.com/package/rwlock库。



 类似资料:
  • 我的屏幕上有两个组件,第一个是图像,第二个是下面的网格和图表。我想使图像居中,使其水平地位于中心,并且在第二个组件之上。第二个组件应该在图像的下方,而不是它的右边。我该怎么做呢? 我试过衬垫和对齐,但这些似乎对我不起作用。

  • 我试着让两个立方体以不同的方式旋转。 为了设置旋转,我这样做。 在多维数据集类内部,我没有使用GL11.glLoadId相()来重置旋转,而是做了这样的事情。 这将重置每个轴的旋转。 数组“rot”保存x、y和z旋转,并通过多维数据集类中的这3种方法进行更新。 单独地,每个GL11.glRotatef(etc, etc, etc)和GL11.glRotatef(etc*-1.0f, etc, et

  • 这是Three.js中大部分对象的基类,提供了一系列的属性和方法来对三维空间中的物体进行操纵。 请注意,可以通过.add( object )方法来将对象进行组合,该方法将对象添加为子对象,但为此最好使用Group(来作为父对象)。 构造器 Object3D() 构造器中不带有参数。 属性 .animations : AnimationClip Array with object's animati

  • 自动识别图像中主体轮廓,与背景进行分离,返回分割后的Alpha图、前景物体图,适应多物体,复杂背景。服饰、男女装、鞋帽、首饰、箱包、化妆品、饮料、快销品、宠物等等,所有明确主体的品类都可以识别分割,电商特别适用,适应复杂背景和光线。模式一 返回二进制文件流模式二 返回base64字符串模式三 通过图片URL返回base64结果 抠图API调用示例代码 github地址: https://githu

  • 问题内容: 如何使用ARKit跟踪的水平和垂直平面将对象隐藏在墙后面/真实对象后面?当前,当您离开房间和/或在应该位于其后的对象之前时,可以通过墙壁看到添加了3D的对象。因此,是否有可能使用ARKit给我的数据提供更自然的AR体验,而不会使物体穿过墙出现? 问题答案: 您在这里有两个问题。 (而且您甚至都没有使用正则表达式!) 如何为ARKit / SceneKit创建遮挡几何? 如果将Scene

  • 如果我不知道一个物体的深度,我如何移除另一个物体内部的一个物体? json对象 假设我想删除“4”,但是“4”可能是第一级孩子或者在另一个孩子里面?