线程安全的本质 多线程和单线程有什么本质区别?
多线程和单线程有什么本质区别?
多线程:多线程意味着一个程序包含多个执行流,也就是说,一个程序可以运行多个不同的线程来同时执行不同的任务,也就是说,一个程序可以创建多个并行执行流。单线程:线程是程序中的执行流。每个线程都有自己的特殊寄存器(堆栈指针、程序计数器等),但代码区域是共享的,即不同的线程可以执行相同的函数。多线程也是一个程序,所以线程需要占用内存,线程越多,占用的内存就越多;多线程需要协调和管理,所以需要CPU时间来跟踪线程;线程之间共享资源的访问会相互影响,必须解决共享资源争用的问题;也是多线程将导致过于复杂的控制。当单个线程执行一个程序时,它所采用的程序路径是按连续顺序排列的。前者必须处理好,后者才能执行。例如,就像ppsspp运行一样。例如,如果您需要处理一段图像解码,则单个线程必须先处理该段,然后才能处理下一段,因此速度会有点慢。多线程意味着在一个进程中有几个相对独立的任务,这些任务由相互竞争的CPU执行。在多处理机环境下,它在宏观上是并发的,但实际上是分时执行,只是执行时间较短。例如,运行ppsspp。为了处理一段图像数据,他可以使用一个线程来处理这段数据,使用另一个线程来处理下一段数据。与单线程相比,提高了速度。
多线程和单线程有什么本质区别?
多线程和单线程的本质区别如下:
(1)多线程的出现并不是由于多核CPU的发明。即使现在有多CPU和多核硬件,也不是因为多线程CPU的运行效率高于单线程。单从CPU的运行效率来看,单任务进程和单线程的效率最高,因为CPU没有任何进程和线程切换开销。
](2)事实上,多线程的出现主要是为了解决IO设备读写引起的单线程程序运行阻塞问题写入速度通常比CPU的处理速度慢。一个极端的例子是,如果需要用户按键在磁盘上输入一个数据,当用户不输入时,单线程程序就会阻塞,而多线程程序可以在程序中播放音乐或继续做一些除键盘输入以外的工作。因此,当程序等待资源阻塞时,多线程可以提高其他资源的利用率(利用率不是效率)。
(3)因此,多线程与单线程最大的区别在于,多线程程序在等待IO操作的同时,可以继续完成此IO以外的其他工作,有利于提高完成整个任务的效果和速度。此外,多线程程序和单线程程序在程序设计上有不同的过程和结构。多线程需要考虑静态变量与其他资源的操作互锁和程序执行的同步。
CPU的线程多少对于打游戏影响大吗?
它有影响。这取决于比赛。
有些游戏不足以进行多核优化,四核或六核就足够了。有些杰作擅长多核优化,比如最近流行的《骑马》、《斜杠2》。几天前,我更新了多核优化。我亲自用微星飞机观察到,在1000多人的战场上,我的3700x被8核16线的40%以上使用。像这样的3A大片还有很多。我猜八核十六线程可能是未来3A游戏多核优化的趋势。从最近半年的游戏测试来看,很多3A大片基本上都是在8核的时候达到了最佳帧数,也就是说8核以上的效果改善不大。四核到六核再到八核是一个渐进效果的视频,也可以在今天的头条找到。。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。