锁定在一个线程中,在另一个线程中释放

时间:2012-02-07 22:47:05

标签: c# multithreading thread-safety

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

2 个答案:

答案 0 :(得分:9)

您可以使用a semaphore。锁定线程获得许可。异步线程释放许可证。信号量很好,因为它们不受各个线程的束缚。

答案 1 :(得分:4)

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

  

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

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