有人可以向我解释主题吗?

Orm*_*Orm 12 c++ python java perl multithreading

我一直在考虑为我的应用程序添加线程化程序以加快执行速度,但问题是我真的不知道如何使用线程,或者什么被认为是"线程安全".例如,游戏引擎如何在其渲染过程中使用线程,或者在什么情况下线程只被认为只是一个障碍?有人可以指出一些资源,以帮助我了解更多或在这里解释?

dan*_*ben 32

这是一个非常广泛的话题.但是如果我对线程一无所知,那么我想知道的事情是:

  • 它们是在"并行"发生的单个进程中的执行单元 - 这意味着处理器中的当前执行单元快速切换.这可以通过不同的方式实现.切换称为" 上下文切换 ",并且存在与此相关的一些开销.

  • 他们可以分享记忆!这是可能发生问题的地方.我将在后面的章节中更深入地讨论这个问题.

  • 并行化应用程序的好处是使用机器不同部分的逻辑可以同时发生.也就是说,如果您的进程的一部分受I/O限制并且其中一部分受CPU限制,则I/O密集型操作不必等到CPU密集型操作完成.如果您有多核处理器(也可以并行化CPU密集型操作),某些语言还允许您同时运行线程,但情况并非总是如此.

  • 线程安全意味着没有竞争条件,这是用于在您的进程执行取决于时间(您不想依赖的事情)时出现的问题的术语.举例来说,如果你有线程AB两个递增共用的对C,你可以看到那里的情况下A读取的值C,然后B读取的值C,然后A覆盖CC+1,然后B覆盖CC+1.请注意,C实际上只增加一次!

  • 一些常见的方法可以避免竞争条件,包括同步,它排除了对共享状态的相互访问,或者根本就没有任何共享状态.但这只是冰山一角 - 线程安全是一个相当广泛的话题.

我希望有所帮助!明白这是一个非常快速的介绍,需要一些学习的东西.我建议用你喜欢的语言找到一个关于多线程的资源,无论发生什么,并给它一个彻底的阅读.