1、使用多线程
若是程序中有能够同时进行的代码,譬如五道算术题,你们每人算一道,最后只花费1/5的时间就解决了5道题,多线程就是这个思路,现代的CPU都是多核的,就至关于能够同时算五道题目,一旦你的代码使用了多线程,恐怕你再也回不到单线程的时代了。数组
有一段程序花费300ms,咱们开了32个多线程以后花费16ms,加速了20倍,更别提GPU动辄百倍的加速效果。
2、什么是线程?
进程想要执行任务就需要依赖线程。换句话说,就是进程中的最小执行单位就是线程,并且一个进程中至少有一个线程。
那什么是多线程?提到多线程这里要说两个概念,就是串行和并行,搞清楚这个,我们才能更好地理解多线程。
所谓串行,其实是相对于单条线程来执行多个任务来说的,我们就拿下载文件来举个例子:当我们下载多个文件时,在串行中它是按照一定的顺序去进行下载的,也就是说,必须等下载完A之后才能开始下载B,它们在时间上是不可能发生重叠的。
并行:下载多个文件,开启多条线程,多个文件同时进行下载,这里是严格意义上的,在同一时刻发生的,并行在时间上是重叠的。
了解了这两个概念之后,我们再来说说什么是多线程。举个例子,我们打开腾讯管家,腾讯管家本身就是一个程序,也就是说它就是一个进程,它里面有很多的功能,我们可以看下图,能查杀病毒、清理垃圾、电脑加速等众多功能。
按照单线程来说,无论你想要清理垃圾、还是要病毒查杀,那么你必须先做完其中的一件事,才能做下一件事,这里面是有一个执行顺序的。
如果是多线程的话,我们其实在清理垃圾的时候,还可以进行查杀病毒、电脑加速等等其他的操作,这个是严格意义上的同一时刻发生的,没有执行上的先后顺序。
3、理解
程序中CPU处理两个程序,A和B
把A和B开成多线程,即两个线程,然后再送入GPU
接下来的就是找双线程的例子进行测试