2012-02-07 4 views
6

У меня есть игровой сервер, который может принимать запросы от пользователя. Пользователь может запросить размещение предметов. Метод места затем порождает некоторые асинхронные httpwebrequests (с таймаутами), чтобы выяснить, правильно ли установлено место размещения. Я хочу блокировку, которая будет заблокирована, когда сервер получит запрос на размещение, и будет разблокирован веб-обратным вызовом. Я бы использовал ReaderWriterLock, но это работает только в том случае, если я остаюсь в одном потоке, а обратные вызовы веб-запросов встречаются в разных потоках. Есть ли еще один замок, который я должен использовать?Блокировка в одном потоке, освобождение в другом

ответ

9

Вы можете использовать a semaphore. Запирающая нить получает разрешение. Асинхронный поток освобождает разрешение. Семафоры отличные, потому что они не связаны с отдельными потоками.

+0

Спасибо, что сработало. – Nikhil

4

Вы можете использовать Semaphore. Цитата из руководства;

Класс Семафор не обеспечивает идентификацию нитей при вызовах WaitOne или Release.

Другими словами, у вас не должно возникнуть проблемы с получением/выпуском двух разных потоков.

Смежные вопросы