试着把我的头缠在线上

本文关键字:在线 我的 | 更新日期: 2023-09-27 18:05:55

我正在努力理解线程是如何工作的,我相信我可能把它弄得太复杂了。

原始的理解:

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

新的理解:

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

换句话说,如果你把代码看作是一个有转弯和连接的道路系统,这些是程序可以完成的流程,主线程只是在其中运行。如果一个新线程被生成,你所要做的就是说它应该从哪里开始,代码从那里开始,可以使用相同的类和命令,所以如果你的代码结构"糟糕",就有两段代码"崩溃"的风险,但除此之外,没有对读取和写入代码的限制,它们都是同一个程序的一部分,只是"道路"上的多辆"汽车"。

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


有了"新理解"和线程一起工作,对我来说更容易把我的头绕起来,所以它被理解正确吗?

试着把我的头缠在线上

你说对了。一般来说,线程是用来做专门的工作的,彼此之间不会重叠。如果主线程必须派生出一个子线程来完成工作,主线程几乎总是不会同时完成工作

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