c# - 当异步函数被锁定时,会发生什么?钟
问题描述
我想知道当这个函数被异步函数调用时会发生什么。
public void Method(ClassA myObject)
{
ClassB converted = Convert.ChangeType(myObject, typeof(ClassB));
if(!converted) return;
lock(currentObject)
{
if(!currentObject) currentObject = converted;
else myQueue.Enqueue(converted);
}
// change some variables of ‘converted’
}
我正在做的是检查参数是否由特定类继承。如果没有,则无需执行其余代码。如果是这样,我锁定“currentObject”变量。如果 currentObject 为空,那么我分配转换后的变量。如果没有,我将变量添加到队列中以稍后更改 currentObject 变量。最后,我修改了转换后的对象的一些变量。
假设这个函数被 2 个函数同时调用。第一个将锁定变量并完成其工作。第二个在这种情况下做什么?
它是否执行代码直到锁定语句并等待第一个完成然后继续执行该功能?它是否忽略了锁定语句并继续更改一些变量并完成功能?它是否完全忽略了该功能?
我想要的是我希望将第二个添加到队列中,因为 currentObject 不再为空。
解决方案
推荐阅读
- oop - 复合设计模式定义
- r - 数学和 rbind 与 zoo 对象
- spring - JMS ActiveMQ SpringBoot .FailoverTransport
- node.js - NodeJs 在 MongoDb 中保存多个文件
- go - Golang 字符串格式提供了意想不到的间距
- c# - 如何在 Elasticsearch NEST 中序列化 JToken 或 JObject 类型的属性?
- java - 使用 Java 技术存储 UII 和 PII 的加密算法
- python - Python 中不支持按位异或的操作数类型
- java - KafkaStreams 没有运行。状态为错误
- algorithm - 计算半铰接卡车的位移坐标