Вопрос, с которым вы связались, - это пересечение границ процесса, но из того, что я прочитал, вы только пересекаете потоки ... учитывая это, я думаю, что класс ReaderWriterGate Джеффа Рихтера мог бы соответствовать вашей проблеме. Он позволяет вам контролировать доступ к общему ресурсу и ставить в очередь запросы на доступ к ресурсу. Похоже, что он не имеет никакого сходства потоков, поэтому, если вы не пересекаете границы процесса, это может быть решением для вас.
Вот ссылка на статью о классе ... Параллельные дела , и вы можете скачать PowerThreading Library здесь
Если ваш случай действительно прост (за исключением блокировки из одного потока и освобождения из другого), я не понимаю, почему вы не можете использовать встроенный ReaderWriterLock в .NET (хотя один в библиотеке PowerThreading предполагается намного быстрее). Класс Monitor не имеет привязки к потоку и может быть доступен из любого контекста, поэтому в зависимости от того, как вы его используете, это может быть вашим самым простым решением.