Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 线程背景问题_C#_Multithreading_Asynchronous - Fatal编程技术网

C# 线程背景问题

C# 线程背景问题,c#,multithreading,asynchronous,C#,Multithreading,Asynchronous,我喜欢线程,但我在互联网上找不到任何关于后台发生的事情的信息(可能我只是不知道如何正确地搜索这些信息),例如,当线程饥饿出现在舞台上时。操作系统如何处理它?我的线程是排队等待在线程池中创建,还是在xy时间后无法创建时被杀死?还是完全是另外一回事 另一个问题是我为什么要关心线程上下文?通过调用ConfigureAwait(false),我知道我并不是在等待线程上下文,它可以被翻译为“我不关心该上下文”。通过调用ConfigureAwait(false)我知道我正在处理死锁 最后一个问题是,当僵局发

我喜欢线程,但我在互联网上找不到任何关于后台发生的事情的信息(可能我只是不知道如何正确地搜索这些信息),例如,当线程饥饿出现在舞台上时。操作系统如何处理它?我的线程是排队等待在线程池中创建,还是在xy时间后无法创建时被杀死?还是完全是另外一回事


另一个问题是我为什么要关心线程上下文?通过调用
ConfigureAwait(false)
,我知道我并不是在等待线程上下文,它可以被翻译为“我不关心该上下文”。通过调用
ConfigureAwait(false)
我知道我正在处理死锁


最后一个问题是,当僵局发生时,后台会发生什么?主线程是否尝试捕获该上下文或其他内容?

我认为死锁用于错误的上下文。死锁描述了两个或多个线程被永久阻塞,彼此等待的情况(例如,被阻塞)

线程饥饿:饥饿描述了线程无法定期访问共享资源并且无法取得进展的情况

我的线程是排队等待在线程池中创建,还是在xy时间后无法创建时被杀死

我真的不明白这个问题。 您的线程不会等待创建。函数创建线程


另一个问题是我为什么要关心线程上下文

从MSDN:“上下文是一个有序的属性序列,它为驻留在上下文中的对象定义了一个环境。在激活过程中为配置为需要某些自动服务的对象创建上下文,例如同步、事务、即时激活、安全性等。多个对象可以存在于一个上下文中。”

这里有一个类似的问题:

最后一个问题是,当僵局发生时,后台会发生什么


这两个线程一直在运行(互相等待),直到您关闭应用程序。

“我为什么要关心线程上下文?”-因为有时在同一个线程上继续运行很重要。想想:UI线程。但据我所知(这可能是错误的),ConfigureAwait默认为true,这意味着我可以获得死锁,这不是任何人想要的。但如果我将其设置为false,我将处理死锁,这意味着我不会等待新创建线程的上下文。是的,所以?我所说的是,在某些情况下上下文很重要,因此您应该关心。您能解释一下这些情况吗我应该在哪里关心上下文,不应该在哪里?如果我理解正确,那么当我将一些任务返回到主(UI)线程时,我应该关心上下文,而当我正在做一些不应该在主(UI)线程上返回的事情时,我不应该关心上下文线程?如果你想关心上下文,那么如果你将false设置为ConfigureAwait,你如何避免主线程上的死锁?可能是google和他对这些主题的看法。至于你不理解的部分。我将尝试重新构造我的问题。如果线程池已满,并且池中没有更多线程,会发生什么我想创建一个线程?这里解释:这个很好。有了这些回复,我得到了我想要的所有答案。谢谢。