我试图围绕线程如何工作,我相信我可能会过于复杂.
原始理解:
以前我认为线程仅限于单个类及其子类,没有类可以跨线程共享,线程之间的通信使我很难理解.
新理解:
但是我读的越多,它就好像线程只是在同一个代码中的随机点运行.您可以将其限制在某些区域,但理论上相同的代码可以在每个线程中运行多次.
换句话说,如果您将代码看作是具有转弯和连接的道路系统,那么这些是程序可以创建的流程,主线程就是通过它来运行的.如果产生了一个新线程,你所做的就是说它应该从哪里开始,代码从那里开始,可以使用相同的类和命令,所以如果你构造代码"坏",则存在两段代码的风险"崩溃",但旁边没有限制阅读和写入代码,它是同一个程序的所有部分,只是"道路"上的多个"汽车".
你可以限制一个线程停留在某个区域(循环/有限的代码部分),并且只在某些地方进行交互,或者你可以忽略它,只是希望避免"崩溃".
随着"新理解"与线程一起工作对我来说更容易包裹我的头脑,所以它是否被理解为正确?
你已经差不多成功了。一般来说,线程是用来做专门的工作的,并且不会相互重叠。如果主线程必须派生一个子线程来完成工作,那么主线程几乎总是不会同时完成这项工作。
它们重叠的区域需要是“线程安全”的,以免踩到彼此的脚趾;例如,多个工作线程填充主线程的集合。当您在 MSDN 上查找类时,您会注意到底部的简介,说明它们是否内置了线程安全,或者您需要通过使用 .net 的锁定、互斥锁或信号量自行完成。
| 归档时间: |
|
| 查看次数: |
171 次 |
| 最近记录: |