试图绕过线程

时间:2013-03-25 09:17:20

标签: c# multithreading

我试图围绕线程如何工作,我相信我可能会过度复杂化。

原创理解:

之前我认为线程仅限于单个类及其子类,没有类可以跨线程共享,线程之间的通信使我很难理解。

新的理解:

但是我读的越多,它就好像线程只是在同一代码中的随机点运行。您可以将其限制在某些区域,但理论上相同的代码可以在每个线程中运行多次。

换句话说,如果您将代码看作是具有转弯和连接的道路系统,那么这些是程序可以进行的流程,主线程就是通过它来运行的。如果产生了一个新线程,你所做的就是说它应该从哪里开始,代码从那里开始,可以使用相同的类和命令,所以如果你构造代码“坏”,则存在两段代码的风险“崩溃“,但旁边没有限制阅读和写入代码,它是同一个程序的所有部分,只是”道路“上的多个”汽车“。

你可以限制一个线程停留在某个区域(代码的循环/有限部分),并且只在某些地方进行交互,或者你可以忽略它,只是希望避免“崩溃”。


随着“新理解”与线程一起使用,对我来说更容易包裹我的头脑,所以它被理解为正确吗?

1 个答案:

答案 0 :(得分:1)

你几乎打了它。通常,线程是专门的工作,不会相互重叠。如果主线程必须产生一个子线程来执行工作,主线程几乎总是不会这样做工作

它们重叠的区域需要“线程安全”,以免踩到彼此的脚趾;例如,多个工作线程填充主线程的集合。当您在MSDN上查找类时,您会注意到底部的模糊,说明它们是否内置了线程安全性,或者您需要通过使用.net的锁定,互斥锁或信号量来自行完成。