我正在寻找一种技术来阻止请求线程(后台工作者,任务等)在前一个线程仍在处理时启动。该线程有一个对象编写器,如果它很忙,我不能在下一个线程中使用它,直到它完成写入。
请注意,在每个线程请求之前发生的处理足够长以至于不应该存在问题,这只是预防性的。
我猜我在这里请求线程对于获得某种类型的响应是至关重要的,这将允许调用下一个线程。但我可以使用一些帮助来设置它。如果有人有类似设计的特定场景,我会很乐意研究推荐的技术。这种线程处理的新变种。
vb.net
答案 0 :(得分:1)
我不确定你打算如何实现这一点,但是你应该尝试使用TPL而不是直接使用Threads。使用Tasks,您可以等待它们完成。
请参阅以下示例https://msdn.microsoft.com/en-us/library/dd537610(v=vs.100).aspx
如果您需要有关差异的更多信息,请阅读以下有关线程与任务的内容。
答案 1 :(得分:0)
通常,互斥锁用于同步。
https://msdn.microsoft.com/en-us/library/windows/desktop/ms684266(v=vs.85).aspx
请注意,您还需要处理WAIT_ABANDONED,这是具有互斥锁而不是完成的线程的状态。
.Net的示例和更多信息:https://msdn.microsoft.com/en-us/library/system.threading.mutex(v=vs.110).aspx