gpt4 book ai didi

c# - 试图把我的头缠绕在线程上

转载 作者:太空狗 更新时间:2023-10-29 17:59:30 25 4
gpt4 key购买 nike

我正在努力思考线程是如何工作的,我相信我可能把它复杂化了。

原始理解:

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

新认识:

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

换句话说,如果您将代码视为具有转弯和连接的道路系统,那么这些就是程序可以实现的流程,主线程只是通过它。如果产生了一个新线程,你所做的就是说它应该从哪里开始,代码从那里开始,可以使用相同的类和命令,所以如果你的代码结构“不好”,就有两段代码的风险“崩溃”,但除此之外,对代码的读写没有任何限制,它们都是同一个程序的一部分,只是“道路”上的多辆“汽车”。

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


有了使用线程的“新理解”,我的头脑变得更加容易,那么它的理解是否正确?

最佳答案

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

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

关于c# - 试图把我的头缠绕在线程上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15611259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com