|
官方网站
http://www.terabit.com.au/solutions.php
TProactor (ACE compatible Proactor) - add-on to ACE class-libraries, which allows using of ACE Proactor pattern on POSIX platforms. Major benefits:
- one code base on MS-Windows and all flavors of UNIX (Proactor pattern);
- in many cases add-on Proactor improves performance up to 2 times (compared with Reactor);
- easy to add platform specific small driver to tune-up the system to get maximum possible performance;
- one code base for SSL and non-SSL implementation of the same solution.
- better scaling for multi-CPU machines
- minimized number of memory allocations and pooling of asynch results
- simplified Proactor internal design with compatible interface with old Proactors
TProactor (ACE compatible Proactor) - add-on to ACE class-libraries, which allows using of ACE Proactor pattern on POSIX platforms. Major benefits:- one code base on MS-Windows and all flavors of UNIX (Proactor pattern);
- in many cases add-on Proactor improves performance up to 2 times (compared with Reactor);
- easy to add platform specific small driver to tune-up the system to get maximum possible performance;
- one code base for SSL and non-SSL implementation of the same solution.
- better scaling for multi-CPU machines
- minimized number of memory allocations and pooling of asynch results
- simplified Proactor internal design with compatible interface with old Proactors
简单的来说,不用使用linux下不太成熟的AIO作为proactor的默认实现了,可能的选择如下:
PVT_NONE = (PVC_NONE), // Provider not exist
PVT_POSIX_AIOCB = (PVC_POSIX | 1), // POSIX Standart AIO api
PVT_POSIX_SIG = (PVC_POSIX | 2),
PVT_POSIX_CB = (PVC_POSIX | 3),
PVT_SUN_AIO = (PVC_SUN_AIO),
PVT_LINUX_NAIO = (PVC_LINUX_NAIO), // Linux libaio apo io_XXXXX
PVT_SELECT = (PVC_EMULATION | 1), //
PVT_POLL = (PVC_EMULATION | 2),
PVT_EPOLL = (PVC_EMULATION | 3),
PVT_DEVPOLL = (PVC_EMULATION | 4),
PVT_SUNPORT = (PVC_EMULATION | 5),
PVT_KQUEUE = (PVC_EMULATION | 6)
另外可以选择两种模式,一种是独立使用TBR_Proactor,一种是替换ACE的Proactor的实现。
配置大体按照下载后解压目录下的install.txt即可。
需要注意的以下。
1.需要安装openssl,这个编译ACE的时候如果不是嫌麻烦特意禁用应该已经安装了。
2.如果使用perl $ACE_ROOT/bin/mwc.pl -type gnuace -include $AIO_ROOT -global $AIO_ROOT/linaio.mpb aio.mwc
需要安装libaio,这个比较简单。
3.如果已经将ace安装到默认目录下/usr/local/lib的话,Terabit生成的makefile会傻傻的找不到,默认将无法找到ace的库。
在$ACE_ROOT/lib目录下做个链接就可以了。
4.在ld.so.conf包含一下运行库的路径
接下来,将例子跑一遍就OK了。
[ 本帖最后由 modern 于 2010-5-8 22:36 编辑 ] |
|