sendfile的疑问
1. linux下的sendfile,传说中的零拷贝。看例子都是再说怎么利用sendfile读文件写socket,那么如果我想要读socket写文件,也能用这个函数吗?2. windows下有没有对应的什么api能达到类似sendfile功能的?
3. ACE_Asynch_Transmit_File用异步的方式把文件传输到socket,跟sendfile相比,那个会更好一些?ACE_Asynch_Transmit_File需要跟Proactor配合使用,linux下Proactor又不好用,不知道ACE_Posix_Proactor究竟是基于什么机制实现的,能否像windows下的IOCP一样有效?epoll是Reactor的。
谢谢! 参考MSDN的:TransmitFile
相信你能找到答案
回复 #2 winston 的帖子
恩,看来ace的ace_transmit_file在windows下应该是基于TransmitFile这个Api实现的。读socket写文件的话,有好什么好建议吗?
谢谢!~ 神说:学好ACE,要看书。。。
顶 原帖由 glchen 于 2009-7-23 14:04 发表 http://acejoy.com/bbs/images/common/back.gif
恩,看来ace的ace_transmit_file在windows下应该是基于TransmitFile这个Api实现的。
读socket写文件的话,有好什么好建议吗?
谢谢!~
读socket写文件的话,没有对应的零拷贝api
可能是一般服务器很少做大量读socket写文件,所以也没必要提供这样的api
回复 #5 wishel 的帖子
如果我们做Ip camera 录像存储服务器,就需要一直从socket读取达到的视频流写入磁盘,这中情况下如果有类似sendfile的做法,是不是会更好呢? 原帖由 glchen 于 2009-7-24 18:18 发表 http://acejoy.com/bbs/images/common/back.gif如果我们做Ip camera 录像存储服务器,就需要一直从socket读取达到的视频流写入磁盘,这中情况下如果有类似sendfile的做法,是不是会更好呢?
这种情况的服务器负载应该不会很高,并发量不会很大。也就是说不是那种对性能有极端追求的服务器。
性能并不是问题的全部,尤其是在系统设计的时候,重点在于各种价值的权衡。比如鲁棒性,可读性,简单性,安全性,伸缩性等等。片面的追求任何一个都会以牺牲其他价值为代价。最终的结果就是针对实际情况做权衡,有所取舍。
个人观点:性能不是问题的全部。在很多很多情况下,性能不重要,起码没有你想象的那么重要。
所以我在开发的时候,首先假设性能不是问题,当真的发现性能有问题时,才去在需要的部位做优化。相对于其他价值,我更关注简单性和可读性。
软件是开发来实用的,不是用来炫技术的。两套软件,一个用了复杂的技术和更高的性能解决了问题,一个更简单性能虽然差些,但仍然满足了需求,我认为后者更经济,开发和维护成本都低得多。
页:
[1]