9

我正试图弄清楚线程是如何工作的,我相信我可能把它复杂化了。

原理解:

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

新认识:

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

换句话说,如果您将代码视为具有转弯和连接的道路系统,那么这些就是程序可以创建的流程,主线程只是通过它运行。如果生成了一个新线程,您所做的只是说明它应该从哪里开始,并且代码从那里开始,可以使用相同的类和命令,因此如果您将代码构建为“糟糕”,则存在两段代码的风险“崩溃”,但除此之外,对代码的读写没有限制,它都是同一个程序的一部分,只是“道路”上的多个“汽车”。

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


使用线程的“新理解”对我来说更容易理解,所以理解正确吗?

4

1 回答 1

1

你已经成功了。一般来说,线程是用来做专门的工作的,不会相互重叠。如果主线程必须派生出一个子线程来完成工作,那么主线程几乎总是不会同时做这项工作

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

于 2013-03-25T12:44:25.890 回答