当前位置:C++技术网 > 资讯 > C++多线程开发:一、为什么我们要使用多线程

C++多线程开发:一、为什么我们要使用多线程

更新时间:2016-01-13 15:07:21浏览次数:1+次

        我们为什么需要多线程来解决问题,解决什么问题。刚刚入门的我,真的不知道大伙都用来解决什么问题的。但是我知道的是用户需要界面不卡,那么我们在通信或者处理问题的时候,界面要有一个线程,数据处理需要有另一个线程,那么我们看到效果就是,不卡!

        程序功能模块化以后,多线程协调工作。例如,一个软件有四个功能:日志写入、网络通信、逻辑及UI。那么我们工作原理可能是这样的:

 

        这里面至少有四个线程,每一个模块都有属于自己的线程,用来处理不同的事务。例如日志线程,它可以接受网络线程的记录写到日志里面,逻辑运算也有自己的记录来写入,那么我们会用多线程加入同步,使得他们能够正常的运作。 问题来了,我们能不能让他们自己写入日志,而不使用日志线程来统一处理呢?答案是:能!效率低而已。

因为写入日志通常会很慢(相对运算来说),写入到文件或者写入到数据库都是很慢的。如果他们自己写入日志,那么会做那么几步:打开日志文件(打开数据库),写入数据,关闭文件(关闭数据库)。而用多线程,我们通常只要提交个数据到线程,让它来处理,自己就继续自己的任务。就像我给你作业本,然后你帮我做作业,而我自己继续玩。还有当有一个线程正在打开该文件,而另一条线程再次打开同一个文件的时候,会返回文件已经被打开的错误,为了避开这个错误,我们通常会不断循环直至打开为止。那如果线程忘记关闭文件,那么另外一个线程将会无限循环,也就是因为写入日志的问题而导致不能正常工作了,这明显不是我们想要的结果。

        所以当功能都模块化以后,我们尽量要他们只高效完成自己的事务,不属于自己的事务交给其他线程去做,这就是多线程的主要作用。

下一篇:《C++多线程开发:二、线程的多个状态