<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div><blockquote type="cite" class=""><div class="">Le 2015-06-25 17:56, Ross Finlayson a écrit :<br class=""><blockquote type="cite" class="">Once again, folks: The best way to use the LIVE555 library is to have<br class="">*exactly one* thread that calls LIVE555 functions. This thread (after<br class="">some initialization to set up timer tasks using<br class="">“scheduleDelayedTask()”) would call “doEventLoop()”, without a<br class="">'watch variable' parameter. In other words, this thread would do<br class="">nothing but run within “doEventLoop()”, and would not block.<br class=""></blockquote><br class="">Now that's contradictory. If it calls doEventLoop(), it blocks in doing so.<br class=""></div></blockquote><div><br class=""></div>Well, yes, strictly-speaking “doEventLoop()” does ‘block' when it calls “select()” - but this is only until the next (I/O or timer-based) event occurs.  What I meant, of course, is that it continues to handle events.  One thing that I should mention (because it relates to your next question) is that the LIVE555 task scheduler contains a 10ms ‘tick’ that ensures that ensures that it returns from “select()” at least every 10ms if there are no other (e.g., I/O) events.</div><div><br class=""></div><div><br class=""><blockquote type="cite" class=""><div class="">And so the other threads need to tell the live555 thread to do something. Except they cannot because the live555 is sleeping inside the live555 event loop…</div></blockquote><div><br class=""></div>No, it’s not ‘sleeping’ - at least not for very long (*at most* 10ms inside “select()", and that time’s configurable).  It will continue to handle events that are signaled by other threads.</div><div><br class=""></div><div>You make it sound like VLC is the first and only application to ever use the "LIVE555 Streaming Media” code, and that nobody else has ever thought about these issues.  On the contrary: many other applications are using this code - most of them in the way that I described.</div><div class=""><br class=""></div><br class=""><div apple-content-edited="true" class="">
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;  "><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;  ">Ross Finlayson<br class="">Live Networks, Inc.<br class=""><a href="http://www.live555.com/" class="">http://www.live555.com/</a></span></span>
</div>
<br class=""></body></html>