标签: c# multithreading thread-safety
我有一个游戏服务器,可以接受用户的请求。用户可以请求放置件。然后,place方法会生成一些异步httpwebrequests(带有超时),以确定放置是否正确。我想要一个在服务器收到放置请求时将被锁定的锁,并且将通过Web回调解锁。我会使用ReaderWriterLock,但只有当我停留在同一个线程中,并且Web请求回调发生在不同的线程上时才有效。我应该使用另一种锁吗?
答案 0 :(得分:9)
您可以使用a semaphore。锁定线程获得许可。异步线程释放许可证。信号量很好,因为它们不受各个线程的束缚。
答案 1 :(得分:4)
您可以使用Semaphore。从手册中引用;
Semaphore类在调用WaitOne或Release时不强制执行线程标识。
换句话说,从两个不同的线程获取/释放时不应该有问题。