Hello Patrick, > But if I signal the main thread from the callback, to free the > resources, the callback might be switched out directly after this > signal, and the main thread might free the resources before the > callback ended and the axis framework used them.
Yes, this is a pretty serious limitation. I have been trying to find out if Axis2/C provides a way to either know the thread id of the communication threads created internally or to be notified exactly when the threads exit. As you suggest, this is treated as an implementation detail and we are expected to code without a precise notification of when these threads finishes their tasks. It sounds like you would like to free resources on a per-call basis. Is that right? I'm quite new to the Axis2/C architecture so perhaps a more experienced person could suggest a mechanism that would fit into the existing methodology and provide this extra feature. My impression is that the design philosophy so far is to free resources after all calls are completed. > With the fd_set in winsock and the select() function, you can wait > at a maximum of 64 (current implementation) sockets at once. > With I/O Completion Ports you can use one thread for an infinite > number of ports... But I think they don't fit well in the modular > (transportation) design of axis That's very interesting. I'm curious as to more of the details of how this functions... If you have one thread waiting on 12 sockets and want to make a new call, can this thread begin the next call, or does a second thread open the socket and pass the job of waiting on it to the first thread? I think we would all agree that your use case would benefit from adding this capability to Axis2/C. You mention a potential conflict with the modular design of Axis; there is also the idea that making such a powerful feature accessible to the average programmer using Axis could be a challenge. Maybe the solution would be to add a new communication mode instead of changing all asynchronous communication to one-thread-multi-socket. I wish I understood the Axis2/C architecture more fully because this would be an interesting area to contribute. The pleasure is all mine in this conversation. So far I am learning more about winsock :) _____ "Ce message est confidentiel, a l'usage exclusif du destinataire ci-dessus et son contenu ne represente en aucun cas un engagement de la part de AXA, sauf en cas de stipulation expresse et par ecrit de la part de AXA. Toute publication, utilisation ou diffusion, meme partielle, doit etre autorisee prealablement. Si vous n'etes pas destinataire de ce message, merci d'en avertir immediatement l'expediteur." "This e-mail message is confidential, for the exclusive use of the addressee and its contents shall not constitute a commitment by AXA, except as otherwise specifically provided in writing by AXA. Any unauthorized disclosure, use or dissemination, either whole or partial, is prohibited. If you are not the intended recipient of the message, please notify the sender immediately."