cpu的线程数是什么作用

2 02 3 年,朋友问我CPU线程数是多少。
我告诉他,这个东西很重要,主要作用是提高多任务能力和计算效率。
首先,线程数是逻辑层面的。
与超线程技术非常相似,物理核心可以模拟两个逻辑线程。
例如,i9 -9 9 00K有8 核1 6 线程。
接下来,多线程针对多任务进行了优化,就像银行一样,线程越多,处理任务的速度就越快。
再比如,在视频渲染、编码等专业场景中,线程越多,处理速度就越快。
不过,越多越好。
这取决于物理核心的数量。
朋友听完后说:哦,我明白了,谢谢!算了,你能理解的。

线程 (detach的作用)

说实话,一说到线程,我总会回想起当年在服务器后台调试的日子。
你提到的主线程和子线程之间的关系与处理点餐系统时的场景特别相似。
主线程接收新订单,然后将它们分配给不同的子线程来处理库存、付款和短信通知。

有趣的是,线程的共享资源部分特别有趣。
比如你提到的代码区和静态存储区,让我想起了之前遇到的一个陷阱——我只是修改了全局变量,没有加锁,结果三个子线程同时修改了它,导致数据混乱。
至于局部变量,每个线程都有自己的堆栈空间。
这就像给每个发件人一个专用的绝缘盒,这样设置时就不会乱七八糟。

Thread类的虚函数设计得很好。
记得当时写电商推荐系统的时候,直接继承了Thread,重写了执行函数,引入了机器学习模型计算,性能直接翻倍。
但后来我发现当线程数量增加时,内存就会耗尽,我明白了为什么我们需要控制线程池的大小。

关于线程分离,用得最多的方法就是那些后台服务。
例如,对于处理文件上传的线程,使用disconnect 使其保持忙碌。
主启动不断接收新的请求,系统在其任务完成后自动回收资源。
这比通过合并等死要省力得多,但你应该注意,有些库函数不能在单独的线程中使用。

我一直在Windows上使用CreateThread,但是每次跨平台移植它时,我都感到很累。
我记得有一次,当我将它移植到嵌入式 Linux 时,我被 pthread_create 难住了,不得不更改 Windows API 参数的顺序才能运行它。
这尤其让我明白为什么Java应该创建一个统一的Thread类,这样可以省去很多兼容性方面的麻烦。

最让我担心的是线程安全问题。
有一次写计数器时,很多线程同时读写,导致数据混乱。
最后使用了互斥锁来解决问题,但是性能测试表明该锁的成本并不低。
我个人没有在这方面运行过原子操作,但我认为 C++1 1 的 std::atomic 可能是一个更优雅的解决方案。

毕竟,纱线就像一个湿货市场,需要精心管理。
主线程是摊主,子线程是助手,共享资源是公共池,局部变量是各自的钱包。
只了解理论是没有用的。
你得把线程类重写几次,你才能知道哪里加锁,哪里使用分配,然后你才能真正理解并发。

CPU的线程数是什么 有什么作用

线程数 = 核心数 x 超线程乘数。

Athlon IIX4 6 4 1 :4 核、4 线程。
I5 3 4 5 0:4 核8 线程。
I7 3 9 7 0X:6 核1 2 线程。

线程数量越多,执行多任务的速度就越快。

超级线程的数量是有限制的,并不是越多越好。