找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 4158|回复: 6

sendfile的疑问

[复制链接]
发表于 2009-7-22 11:06:14 | 显示全部楼层 |阅读模式
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的。

谢谢!
发表于 2009-7-23 13:52:16 | 显示全部楼层
参考MSDN的:TransmitFile
相信你能找到答案
 楼主| 发表于 2009-7-23 14:04:11 | 显示全部楼层

回复 #2 winston 的帖子

恩,看来ace的ace_transmit_file在windows下应该是基于TransmitFile这个Api实现的。
读socket写文件的话,有好什么好建议吗?
谢谢!~
发表于 2009-7-24 14:34:12 | 显示全部楼层
神说:学好ACE,要看书。。。
发表于 2009-7-24 14:47:00 | 显示全部楼层
原帖由 glchen 于 2009-7-23 14:04 发表
恩,看来ace的ace_transmit_file在windows下应该是基于TransmitFile这个Api实现的。
读socket写文件的话,有好什么好建议吗?
谢谢!~

读socket写文件的话,没有对应的零拷贝api
可能是一般服务器很少做大量读socket写文件,所以也没必要提供这样的api
 楼主| 发表于 2009-7-24 18:18:05 | 显示全部楼层

回复 #5 wishel 的帖子

如果我们做Ip camera 录像存储服务器,就需要一直从socket读取达到的视频流写入磁盘,这中情况下如果有类似sendfile的做法,是不是会更好呢?
发表于 2009-7-25 15:21:20 | 显示全部楼层
原帖由 glchen 于 2009-7-24 18:18 发表
如果我们做Ip camera 录像存储服务器,就需要一直从socket读取达到的视频流写入磁盘,这中情况下如果有类似sendfile的做法,是不是会更好呢?

这种情况的服务器负载应该不会很高,并发量不会很大。也就是说不是那种对性能有极端追求的服务器。

性能并不是问题的全部,尤其是在系统设计的时候,重点在于各种价值的权衡。比如鲁棒性,可读性,简单性,安全性,伸缩性等等。片面的追求任何一个都会以牺牲其他价值为代价。最终的结果就是针对实际情况做权衡,有所取舍。

个人观点:性能不是问题的全部。在很多很多情况下,性能不重要,起码没有你想象的那么重要。
所以我在开发的时候,首先假设性能不是问题,当真的发现性能有问题时,才去在需要的部位做优化。相对于其他价值,我更关注简单性和可读性。
软件是开发来实用的,不是用来炫技术的。两套软件,一个用了复杂的技术和更高的性能解决了问题,一个更简单性能虽然差些,但仍然满足了需求,我认为后者更经济,开发和维护成本都低得多。
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

Archiver|手机版|小黑屋|ACE Developer ( 京ICP备06055248号 )

GMT+8, 2024-11-23 00:14 , Processed in 0.018939 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表