我不是很清楚(并且找不到足够清晰的文档):在使用lock
关键字来编写async
方法时:如果对象已被锁定,线程会被阻塞还是会返回一个处于暂停状态的任务(不会阻塞线程,并且在锁定释放后返回)?
在下面的代码中,这行代码会阻塞线程吗?如果它会阻塞线程(这是我想的),是否有标准的非阻塞解决方案? 我正在考虑使用AsyncLock,但首先我想尝试一些标准的方法。
private object myLock = new object();
private async Task MyMethod1()
{
lock (myLock) // <---- will this line cause a return of the current method
// as an Await method call would do if myLock was already locked?
{
//....
}
}
// other methods that lock on myLock