Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

Monitor.Enter and Monitor.Exit are designed to be called from the same thread. But, what if I need to release a lock in a different thread than acquired?

For example: there are shared resource and asynchronous operation that uses this resource. The operation begins with BeginOperation and acquires the lock on the shared resource. There also the EndOperation method that releases the lock. EndOperation is typically called in another thread from a callback, thus I can't call Monitor.Exit in the EndOperation method. What is the best approach in this case? Will double-check locking with AutoResetEvent instead of Monitor be a good solution?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
364 views
Welcome To Ask or Share your Answers For Others

1 Answer

The primitive you're looking for is called a semaphore which can be safely entered on one thread and exited from another.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...