<div dir="ltr">And if the GCD (<span style="font-family:arial,sans-serif;line-height:16px">Grand Central Dispatch</span>) was used?<div><br></div><div><span style="color:rgb(0,0,0);font-family:sans-serif;font-size:13px;line-height:19.1875px">libdispatch is under </span>Apache 2.0 license and also proved to be very efficient.<br>
</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/3/12 David Schleef <span dir="ltr"><<a href="mailto:ds@schleef.org" target="_blank">ds@schleef.org</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
GStreamer is pretty easily scalable across multiple processes or hosts.<br>
It requires using one of several mechanisms to move data between the<br>
processes or hosts, including gdppay/gdpdepay, tcp(server|client)(src|sink),<br>
and shmsrc/shmsink. The main tradeoff is efficiency -- you generally have<br>
to copy and synchronize across process/host boundaries, which is not free.<br>
<br>
OTOH, GStreamer is a pretty robustly written piece of software. My<br>
company has have systems in production with process uptimes of many<br>
months, constructing and destroying 1000's of pipelines, as well as<br>
systems with pipeline uptimes of several months. Separating pieces<br>
out into different processes would not be on my first page of ideas<br>
for making the system more robust, since that would merely add complexity<br>
that would need to be brought up to the same level of rigor before it<br>
would add even a tiny amount of value. In fact, we're doing exactly<br>
the opposite: combining things into one process in order to have<br>
great inter-module communication with a single type of logging and<br>
crash dumping, instead of limited inter-process communication with<br>
mixed types of logging.<br>
<br>
Of course, doing this well requires rigorous engineering practices. But<br>
that's a vastly simpler task when the underlying framework already lives<br>
up to that level.<br>
<br>
(Also, everything Sebastian says in the other email about isolating<br>
certain pieces of bad code is entirely true.)<br>
<span class="HOEnZb"><font color="#888888"><br>
<br>
<br>
David<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
<br>
On Tue, Mar 12, 2013 at 05:55:05AM -0700, Baby Octopus wrote:<br>
> Hi,<br>
><br>
> Gstreamer framework has been well accepted in open source community and has<br>
> been a well accepted product in terms of its flexibility and functionality<br>
> as a media framework. I guess its 12 year old now<br>
><br>
> Was just wondering why one aspect has not been looked into as yet to make<br>
> the framework more robust i.e., using processes instead of threads. A<br>
> certain media pipeline can get really complicated with so many queue, tee,<br>
> multiqueue and might lead to a large number of active threads. And in case<br>
> if any thread crashes say for some reason, the whole pipeline collapses.<br>
> This isn't an ideal situation to be in. Processes instead, will not make the<br>
> complete pipeline to crash. Any crash in a process will lead to only that<br>
> process to crash. And Inter process communication isn't that costly either<br>
> since it can be handled at kernel level<br>
><br>
> So any particular reason here why thread is preferred over processes? It<br>
> could also be true that its is just written that way without any reason. I'm<br>
> just curious to know here<br>
><br>
> Please see that I'm not referring to any good,bad,ugly component here. I'm<br>
> only referring to the gstreamer framework.<br>
><br>
> ~BO<br>
><br>
><br>
><br>
><br>
> --<br>
> View this message in context: <a href="http://gstreamer-devel.966125.n4.nabble.com/Superiority-of-processes-over-threads-in-gstreamer-framework-tp4659072.html" target="_blank">http://gstreamer-devel.966125.n4.nabble.com/Superiority-of-processes-over-threads-in-gstreamer-framework-tp4659072.html</a><br>
> Sent from the GStreamer-devel mailing list archive at Nabble.com.<br>
> _______________________________________________<br>
> gstreamer-devel mailing list<br>
> <a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
> <a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
_______________________________________________<br>
gstreamer-devel mailing list<br>
<a href="mailto:gstreamer-devel@lists.freedesktop.org">gstreamer-devel@lists.freedesktop.org</a><br>
<a href="http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel" target="_blank">http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel</a><br>
</div></div></blockquote></div><br></div>