锁定一根线,释放另一根线

本文关键字:一根 释放 锁定 | 更新日期: 2023-09-27 18:23:35

我有一个可以接受用户请求的游戏服务器。用户可以请求放置碎片。然后,place方法生成一些异步httpweb请求(超时),以确定放置是否正确。我想要一个锁,它将在服务器接收到放置请求时被锁定,并将由web回调解锁。我会使用ReaderWriterLock,但只有当我停留在同一个线程中,并且web请求回调发生在不同的线程上时,它才有效。还有另一把锁我应该用吗?

锁定一根线,释放另一根线

您可以使用信号量。锁定线程获得许可。异步线程释放一个许可证。信号量非常漂亮,因为它们不绑定到单个线程。

您可以使用Semaphore。引用手册;

Semaphore类在调用WaitOne或Release时不强制执行线程标识。

换句话说,从两个不同的线程获取/释放应该不会有问题。