这篇文章给大家聊聊关于为什么大多数游戏都不做多线程优化,以及不建议使用的线程方法对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。
本文目录
php5 NTS和TS版本的区别,所谓的线程安全和非安全
先从字面意思上理解:
None-ThreadSafe就是非线程安全,在执行时不进行线程(thread)安全检查;
ThreadSafe就是线程安全,执行时会进行线程(thread)安全检查,以防止有新要求就启动新线程的CGI执行方式耗尽系统资源。
再来看PHP的两种执行方式:
ISAPI和FastCGI。
FastCGI执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率,所以,如果是以FastCGI(无论搭配IIS6或IIS7)执行PHP,都建议下载、执行non-threadsafe的PHP(PHP的二进位档有两种包装方式:msi、zip,请下载zip套件)。
而线程安全检查正是为ISAPI方式的PHP准备的,因为有许多php模块都不是线程安全的,所以需要使用ThreadSafe的PHP。
为什么大多数游戏都不做多线程优化
首先,现代游戏大部分瓶颈在图形渲染,也就是显卡上,太强的cpu计算能力用处不大。
第二,多线程开发比单线程复杂得多,游戏开发大多时间紧工作量大,游戏讲究尽快上线接受市场考验,多线程开发大多费时费力不讨好
第三,多线程并不总是能提高性能,尤其是游戏这样场景单一,大多数计算任务互相影响的情况
第四,游戏大多是硬实时任务,由于操作系统线程调度的不确定性,太多的线程反而会让操作系统调度不过来,所以有多线程经验的程序员都知道,多线程虽然能一定程度上提高吞吐能力,但并不一定能提高响应能力,玩家的感受可能就是一会帧率爆表一会卡出翔,平均帧率很高,但体验并不好,还不如去优化单线程。
jdk线程池需要关闭吗
需要关闭的,当应用程序执行完所有任务以后需要关闭线程池的,否则可能导致内存泄漏,关闭线程池有shutdown()方法和shutdownnow()方法。
线程池,怎么停止线程池中的线程
1.自然终止。
你的线程执行完它启动时运行的方法,就自然终止了。适用于单个或多个一次性任务。如果是多个,这种情况推荐线程池。把任务写成线程池的Task。
2.有个管理线程,去调用工作线程的workingThread.Interrupt()方法。前提是,用一些同步机制防止工作线程的工作做一半被扔那了。
这种办法适用于循环等待某些任务的线程,比如TCPListener的循环Accept的线程或者其它响应消息的线程,或者接收/处理心跳消息的线程。
为什么大多数游戏都不做多线程优化和不建议使用的线程方法的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!