我有一种情况,我一次执行多个线程。在某些情况下,这些线程将被放置在while()循环中一段未知的时间,并且如果在此循环中捕获了一定数量的线程,那么调度程序最终会停止让其他线程执行。延迟并唤醒正在执行的任务? (Task.Delay?)
我想知道是否有某种方式可以延迟执行线程(将它从预定列表中移除),然后让其他线程进入。然后是否可以稍后通过线程ID或某事唤醒该线程像那样?
我在阅读有关Task.Delay并看到它暂停执行的时间范围,并且有可能为无限次的时间计时,但是是否有可能无限地计时直到事件发生,然后通过某个名称或ID取消它?
编辑:我想这个问题是一个更难张贴代码,但或多或少我有一种情况,请求进来,放入一个循环,如:
while(true){
//check for something that could make me want to delete this thread/request
//do some things
}
我注意到当我发送大量的请求时,我从来没有停止过,但仍然在他的循环中(我知道),但似乎可以做到这一点的线程的最大数量是16/32(取决于我的计算机,我运行它on),并阻止其他请求被安排运行。
我想知道,如果while()循环里面我可以做这样的事情:
while(true){
//put this thread to sleep
//do some things that
//call some function to wake up the specific thread I need to do work on, before I put it back to sleep
}
在此的差别现在是不是16/32线程上运行,我可以有1“王线程“进入这个while()循环可以”做一些事情“,然后唤醒需要受到'事物'影响的线程。是否有办法睡觉并唤醒特定线程,以便可以安排其他线程运行?
没有代码,很难确切地告诉你想要做什么,但可能[Monitor.Wait(Object)](https://msdn.microsoft.com/en-us/library/ateab679(v = vs .110).aspx)是你在找什么? – sstan
对不起,我添加了更多解释。 – Pipeline