关于这方面一直有个问题没想明白,希望指教:操作系统分配时间片是以什么为单位?线程还是进程,如果是进程,好像通过多线程提高速度就没有意思了吧,因为再多的线程,它们总的时间片是相同的,但如果是线程,通过提高线程的优先级使操作系统为这个线程分配更多的时间片不就行了吗?为什么要通过增加线程个数这种通过改变“量”的办法来提高速度,而不使用前者改变“质”的办法呢?
注:我说的这种是在多个线程的运行目的都是一样的情况下,比如都是用来计算一批数据的,并且这些数据的计算结果对于计算没有影响。因此,我觉得多线程的提出并不是为了提高速度,而是为了能多个没有关联的任务同时进行。
胡说一气,还望指教
注:我说的这种是在多个线程的运行目的都是一样的情况下,比如都是用来计算一批数据的,并且这些数据的计算结果对于计算没有影响。因此,我觉得多线程的提出并不是为了提高速度,而是为了能多个没有关联的任务同时进行。
胡说一气,还望指教
你回答的意思我知道,但没理解我的意思,请仔细看一下我的 注
通过增加线程的数目增加得到处理的时间那还不如提高线程的优先级获得更多的处理时间,这样还能减少CPU进行线程切换的开销
------------------------------------------------------------------------------------线程优先级不能乱改的,你要取得更多系统资源,也要使用正常手段。你说哪本书上告诉你写程序要靠提高优先级的。有几个软件靠提高优先级来提高效率的???一般都怕过分占用影响系统运行,采用了空闲处理的。你要知道,如果一个大任务的话,就一个线程执行的话,相对将任务合理划分到子线程处理,所得到的效率是有很大差别的。一个线程,
---网络数据接收----解析处理----分类-----存储------可视化显示你这样一个大循环执行效率是可想而知的。都什么都处理完了才去取数据,如果是UDP通信的话,可能不知道丢了多少数据包。多个线程:
----存储线程(可选)
----->网络接收线程----数据缓冲------数据解析线程-------数据缓冲
----可视化线程各个线程协作,相对来说取得的时间片也多了,而且对系统的影响也比那个提高优先级的好得太多。