Actually, that was how I had it setup initially. However, IIRC (as
it's been awhile), the serving host suffered performance problems (race
conditions) as the client count grew. I was able to get the best
performance with the modifications I made since it relies purely on
waiting for event objects. It should be possible to come up with a setup
that is cross-platform (using pthreads perhaps?). I also target OS X, so
that is important to me.
Thanks!
-Beau
On 9/14/10 2:09 AM, Benoit Germain wrote:
Hello,
Why don’t you just call enet_host_service with some small timeout? The
function will return even when there is nothing to process and you can
send all you want. Admittedly this may cause some delay up to the
timeout you specified, but this seems to work well enough for me.
Benoit.
*De :* [email protected]
[mailto:[email protected]] *De la part de* Beau Albiston
*Envoyé :* lundi 13 septembre 2010 23:13
*À :* [email protected]
*Objet :* [ENet-discuss] Multithreading: dealing with
enet_host_service blocking
Hello All,
I’m particularly interested in how people are dealing with the
enet_host_service blocking on receive when you have things to send…
I have solved this problem already, but was curious as to how others
have solved the same problem. My solution involved making (only for
Win32 in my case) modifications to the enet_socket_wait function to
allow waiting on socket send and receive, as well as a “cancel wait”
event object (using WSAEventSelect, and WSAWaitForMultipleObjects). I
then added an additional function (enet_socket_cancel_wait) that
signals the “cancel wait” event object and wakes the network thread.
From there, the enet_host_service function returns with a timeout
event from which I can then pluck a queued send command from my queue
(using lock-free queues). So, my main thread queues a send command and
then calls enet_socket_cancel_wait to wake the network thread (in case
it is waiting on recv) to process the send command.
(Lee, if you’re interested in the changes, I can send them to you.)
Thanks,
-Beau
_______________________________________________
ENet-discuss mailing list
[email protected]
http://lists.cubik.org/mailman/listinfo/enet-discuss
_______________________________________________
ENet-discuss mailing list
[email protected]
http://lists.cubik.org/mailman/listinfo/enet-discuss