以下是一些单核cpu多线程的疑问,求解答(都指单核)。
1.如果一个进程有n个任务要处理,因为终究是在一个cpu上跑,所以这n个任务在一个线程还是多个线程上跑,执行的总时间是一样的(多线程,线程切换可能更浪费时间)?
2.是否进程开多线程就能抢到更多的cpu时间,python这种带GIL的估计是没戏了,那么java呢?
3.自己抢到更多cpu,机器上的其它程序不就cpu时间少了么?是因为cpu大部分时间都是空闲的,不怕抢?还是因为在做应用层开发的时候,是不用考虑其它程序能不能抢到cpu时间的。
4.一个进程所有线程能抢到的时间片总和是有最大值吗?一个线程一次能拿到多长的cpu时间?
综上,我的最大疑问就是:对于单核cpu而言,开多线程难倒只能防止阻塞么?
我想如果你了解操作系统对进程的管理机制就不会问出这样的问题了。
通过开线程来抢CPU还不如提高一下优先级呢。
程序是为需要设计的,线程是在需要的时候使用的,不是为了用而用的。