菜逼有个问题想不通,多线程中存在用分时模型的调度方式,一个线程要在制定时间片内执行任务,用完之后就要给其他的线程,但是进程中的多线程是共享内存,而且可以同时进行的,这也是多线程相对于进程的特点所在,那么为什么书上还有两个线程不能同时进行,还会出现阻塞状态的说法呢?
有人告诉我说单核并不能真正意义上实现多线程,那么单核的多线程设计有何意义呢,它如何减轻了cpu的负担呢,而迅雷这种软件支持同时下载多个文件,这也属于多线程的范畴吧,而单核的u肯定也可以支持迅雷的这种功能啊,那不是和他的说法冲突了吗。。。求大神解惑啊
多线程是并发执行,但不是同时进行,同学不要搞混了。假设火车站买票有五个窗口,一共一百张票,那么就是5个人卖一百张票。那么一号在卖第一张票的时候
2号是不能和1号卖同一张票的(这涉及到线程安全问题)。那么为了解决这个冲突,1号卖第一张票的时候会将票上锁,其他线程无法访问而进入阻塞状态
当1号卖出第一张票时解锁,其他线程卖剩下的99张。所以线程是有优先级的,但优先级也不是绝对,优先级只是一个cpu调度的概率大小。
迅雷是多线程,但也是断点续传。比如一部电影有1个G,一共五个线程,那么第一个线程传输1到300kb,第二个线程从300kb到600kb,以此类推
那么五个线程不会相互干扰,可以并发执行也不会阻塞。同学懂了吗
迅雷下载的方式其实是根据节点分的,比如一个100M的东西,他可以分成4个线程下,每个下250M