关于多线程和线程调度、优先级的问题??

菜逼有个问题想不通,多线程中存在用分时模型的调度方式,一个线程要在制定时间片内执行任务,用完之后就要给其他的线程,但是进程中的多线程是共享内存,而且可以同时进行的,这也是多线程相对于进程的特点所在,那么为什么书上还有两个线程不能同时进行,还会出现阻塞状态的说法呢?

有人告诉我说单核并不能真正意义上实现多线程,那么单核的多线程设计有何意义呢,它如何减轻了cpu的负担呢,而迅雷这种软件支持同时下载多个文件,这也属于多线程的范畴吧,而单核的u肯定也可以支持迅雷的这种功能啊,那不是和他的说法冲突了吗。。。求大神解惑啊

2个回答

多线程是并发执行,但不是同时进行,同学不要搞混了。假设火车站买票有五个窗口,一共一百张票,那么就是5个人卖一百张票。那么一号在卖第一张票的时候
2号是不能和1号卖同一张票的(这涉及到线程安全问题)。那么为了解决这个冲突,1号卖第一张票的时候会将票上锁,其他线程无法访问而进入阻塞状态
当1号卖出第一张票时解锁,其他线程卖剩下的99张。所以线程是有优先级的,但优先级也不是绝对,优先级只是一个cpu调度的概率大小。

迅雷是多线程,但也是断点续传。比如一部电影有1个G,一共五个线程,那么第一个线程传输1到300kb,第二个线程从300kb到600kb,以此类推
那么五个线程不会相互干扰,可以并发执行也不会阻塞。同学懂了吗

迅雷下载的方式其实是根据节点分的,比如一个100M的东西,他可以分成4个线程下,每个下250M

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐