怎么向百度提交网站,外贸电商做俄罗斯市场网站,wordpress 类似微博,网站建设 推广薪资goroutine 看一个需求 需求#xff1a;要求统计1-200000000000的数字中#xff0c;哪些是素数?
分析思路#xff1a;
1)传统的方法#xff0c;就是使用一个循环#xff0c;循环的判断各个数是不是素数#xff08;一个任务就分配给一个cpu去做#xff0c;这样很不划算…goroutine 看一个需求 需求要求统计1-200000000000的数字中哪些是素数?
分析思路
1)传统的方法就是使用一个循环循环的判断各个数是不是素数一个任务就分配给一个cpu去做这样很不划算而且非常慢
2)使用并发或者并行的方式将统计素数的任务分配给多个goroutine去完成这时就会使用到goroutine速度和核数有关
goroutine可以做一个并发和并行处理可以让一个很大的任务分解到各个goroutine去完成。 进程和线程说明 1)进程就是程序程序在操作系统中的一次执行过程是系统进行资源分配和调度的基本单位
2)线程是进程的一个执行实例是程序执行的最小单元它是比进程更小的能独立运行的基本单位。
3)一个进程可以创建核销毁多个线程同一个进程中的多个线程可以并发执行。
4)一个程序至少有一个进程一个进程至少有一个线程 双击迅雷就会启动一个进程一个迅雷可以下载多个文件。每个下载任务可以看成一个线程这样才能够发挥cpu最大的一个性能。
并发不适并行从效果上说好像是5个同时下载其实就是时间片很短从微观的角度看其实就是一个时间点只有一个文件在下载。 并发和并行 1)多线程程序在单核上运行就是并发
2)多线程程序在多核上运行就是并行
并发因为是在一个cpu上比如有10个线程每个线程执行10毫秒(进行轮询操作)从人的角度看好像这10个线程都在运行但是从微观上看在某一个时间点看其实只有一个线程在执行这就是并发。
并行因为是在多个cpu上(比如有10个cpu),比如有10个线程每个线程执行10毫秒(各自在不同cpu上执行),从人的角度看这10个线程都在运行但是从微观上看在某一个时间点看也同时有10个线程在执行这就是并行
传统的编程语言即使有多任务也是分配在一个cpu上面的这样多核是不能发挥威力。
go语言就是要将并发转化为并行。