俺不太懂,请大家帮忙解释一下。。不懂就问。 4个线程拷贝一个文件,是否有意义在某群看到讨论,,一直在争论,,当然是二方面的辩论。。不知道在实战中是否有意义?单CPU分时间片,四个线程就是轮转时间片,有意义吗,,请教了,请高手帮忙解释。感谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 本地的话应该木意义但是网络多线程下载文件有时候可以提速,这个可以自己去google一下原理 单CPU,单资源(硬盘)...资源竞争,无意义多硬盘,从a盘考到b盘是否有意义呢?或者多硬盘,如果一个线程负责读a盘,一个线程负责写B盘,是否有意义呢? 单CPU如果程序中需要数据运算,又需要调用其他设备,而且需要等待其他设备就绪如果那么是单线程等待外围设备的时候程序完全处于"暂停"状态,CPU就空闲了如果是,多线程一个线程负责运算,一个线程负责外围设备那么等待外围设备的时候,负责外围设备的线程会退出CPU,负责运算的线程会占用CPUCPU并没有空闲这样才有意义 单线程 CPU占用运算: ---------- ----------------外围设备: ---------- ----------多线程运算线程: ---------- ---------- --------- -------外围设备: ----------------- ---------------- 单线程 CPU占用运算: ----------| |----------------|外围设备: |----------| |----------多线程运算线程: ----------| ---------- |---------| -------外围设备: |-----------------| | ---------------- 感谢七分画图,,俺像群中讲的,,单CPU多硬盘多线程应该能增加效率如果是多CPU单硬盘这种情况就应该考虑一下了 拷贝文件,可以是像DMA一样的,这时候和CPU没有什么大关系的了!具体要看你文件的IO操作了,比如是多磁盘冗余?...FT--Anything one man can imagine, other men can make real. 理论上说,如果在你的程序复制文件的同时,别的程序也在读写硬盘的话,无论何种情况(CPU的多少、硬盘的个数),分成多个线程,都是有点意义的。因为系统是轮流分配时间给各个线程的。假设系统已经有20个线程在跑(假设各个线程的优先级相同),那么你的程序运行后,如果是单线程,此时有21个线程,系统会分配1/21(4.76%)的时间来运行你的程序。假如你的程序有4个线程,这4个线程都在复制文件,那么此时系统有24个线程,系统会分配4/24(16.7%)的时间片断运行你的程序(复制文件),这样也就加快了复制的速度。当然,上面只是假设,系统的各个线程的优先级不可能完全,而且并不是所有的线程都在读写硬盘,所以用4个线程,并不是就可以提高4倍左右的速度。而且CPU比较快,硬盘比较慢,如果此时只有你的程序读写硬盘,那么读写硬盘速度可能没有提高。但是如果有其他的程序同时读写硬盘,那么无论是几个CPU、几个硬盘,我认为用4个线程应该都可以提高读写的速度,但是程序代码会变得复杂一些。 书上不是说多线程对多cpu的情况才有意义么? 要看你是用在什么地方?比如在多CPU、多数据库节点上做数据LOAD,这样做是很有意义的,如DB2数据库,在做ETL时通常要将一个文件的拷贝进行分解,这样做就是为了发挥主机及数据库的性能。 本地拷贝或者远程拷贝,多线程都没什么用,除非网络传输的时候对方限制了每个连接的下载速率。像NetAnts、FlashGet这样的下载工具,可以测试一下,开一个线程和开多个线程,服务器端不做任何限制,下载总速率应该差不多。 在pagecontrol控件的不同页面连接不同的数据表的问题 clientdataset 排序的问题! 关于应用程序中记数的问题 关于TList删除问题.请帮忙.(只有10分了,救命啊.) 数据库的树结构--转换树控件的问题 我有2个问题? 100小问题,如何在自己写的控件中重载继承父控件的事件。在线等待~~ 哪位能告诉我在哪能找到这样的控件? Delphi 中memo组件换行问题 没有连接线控制的代码? 100分求interbase6.5的ODBC驱动!!!来者有分!!!不够再加!! 散分,目前你在CSDN社区有可用分:9280
多硬盘,如果一个线程负责读a盘,一个线程负责写B盘,是否有意义呢?
等待外围设备的时候程序完全处于"暂停"状态,CPU就空闲了如果是,多线程
一个线程负责运算,一个线程负责外围设备
那么等待外围设备的时候,负责外围设备的线程会退出CPU,负责运算的线程会占用CPU
CPU并没有空闲这样才有意义
运算: ---------- ----------------
外围设备: ---------- ----------多线程
运算线程: ---------- ---------- --------- -------
外围设备: ----------------- ----------------
运算: ----------| |----------------|
外围设备: |----------| |----------多线程
运算线程: ----------| ---------- |---------| -------
外围设备: |-----------------| | ----------------
具体要看你文件的IO操作了,比如是多磁盘冗余?...
FT
--
Anything one man can imagine, other men can make real.
当然,上面只是假设,系统的各个线程的优先级不可能完全,而且并不是所有的线程都在读写硬盘,所以用4个线程,并不是就可以提高4倍左右的速度。而且CPU比较快,硬盘比较慢,如果此时只有你的程序读写硬盘,那么读写硬盘速度可能没有提高。但是如果有其他的程序同时读写硬盘,那么无论是几个CPU、几个硬盘,我认为用4个线程应该都可以提高读写的速度,但是程序代码会变得复杂一些。