1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-02-15 04:42:04 +00:00

For #2194, yield for timer, for rtc publisher

This commit is contained in:
winlin 2021-02-11 22:49:54 +08:00
parent a04dd7ed30
commit 5a28e658a4

View file

@ -594,6 +594,9 @@ srs_error_t SrsUdpMuxListener::cycle()
// and we can reuse the plaintext h264/opus with players when got plaintext.
SrsUdpMuxSocket skt(lfd);
// How many messages to run a yield.
uint32_t nn_msgs_for_yield = 0;
while (true) {
if ((err = trd->pull()) != srs_success) {
return srs_error_wrap(err, "udp listener");
@ -661,6 +664,13 @@ srs_error_t SrsUdpMuxListener::cycle()
if (SrsUdpPacketRecvCycleInterval > 0) {
srs_usleep(SrsUdpPacketRecvCycleInterval);
}
// Yield to another coroutines.
// @see https://github.com/ossrs/srs/issues/2194#issuecomment-777485531
if (++nn_msgs_for_yield > 10) {
nn_msgs_for_yield = 0;
srs_thread_yield();
}
}
return err;