[ace-users] Help ! Porting ACE Proactor Aio application on Linux

Steve Huston shuston at riverace.com
Wed Mar 2 16:30:27 CST 2016

Thank you for the PROBLEM-REPORT-FORM.

I looked for a bit and found no new developments in Linux kernel aio socket support, so the situation has apparently not changed.

Your choices are:
1. Redesign your application to alternate reads and writes; some protocols won’t support this well, but if you can it’s the easiest way.
2. Change to using Reactor (particularly, ACE_Dev_Poll_Reactor) on Linux, at least.
3. Write something to emulate aio using reactive mechanisms. There was an effort that did this in ACE quite a few years ago – maybe you can get your hands on that and see if it could work for you.


From: ace-users [mailto:ace-users-bounces at list.isis.vanderbilt.edu] On Behalf Of h w
Sent: Tuesday, March 01, 2016 9:45 AM
To: ace-users at list.isis.vanderbilt.edu
Subject: [ace-users] Help ! Porting ACE Proactor Aio application on Linux


         Centos 6.7   and Linux kernel 2.6.32-573.12.1.el6.i686

    THE $ACE_ROOT/ace/config.h
           #define ACE_HAS_AIO_CALLS
           #include "ace/config-linux.h"

    THE $ACE_ROOT/include/makeinclude/platform_macros.GNU
            include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU

    CONTENTS OF $ACE_ROOT/bin/MakeProjectCreator/config/default.features
            no such file


        COMPILATION?      no
        LINKING?     no
            On Unix systems, did you run make realclean first?   Yes, I did.

        Using ACE Proactor AIO framework on network sockets to exchange messages between two or more endpoints on  linux OS.  It looked the message read or write blocked or in order.

         I am porting an application into Linux which utilizes ACE proactor AIO framework for a network communication ( read/ write socket ).  It works fine on Windows OS. However, on Linux, The application looked like exchange messages in order,  for example, When I tried to send a message to the peer, I found that ACE_POSIX_AIOCB_Proactor did invoke aio_write() but the message did not get sent out util the peer sent a message out, and then got that previous message in. More worse, most time, when the connector estalished a connection and tried to send the first message, the system got locked up because a read operation probably be put before write operation for listening any incoming messages.

         I searched the issue and found the similar issue report in the link but it was several years age:  https://stevehuston.wordpress.com/2008/11/25/when-is-it-ok-to-use-ace-proactor-on-linux/

Is it  still the limitation on Linux?  Is there any way to get the ACE Proactor AIO work for network communication ( exchange message via socket with full duplex) now?  Any help would be greatly appreciated


This email has been sent from a virus-free computer protected by Avast.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.isis.vanderbilt.edu/pipermail/ace-users/attachments/20160302/6897aabc/attachment.html>

More information about the ace-users mailing list