{"id":2249,"date":"2015-12-29T14:18:45","date_gmt":"2015-12-29T14:18:45","guid":{"rendered":"http:\/\/www.blog.facilcloud.com\/noticias\/?p=2249"},"modified":"2016-07-26T16:27:24","modified_gmt":"2016-07-26T16:27:24","slug":"programacion-paralela-deberia-interesarte","status":"publish","type":"post","link":"https:\/\/www.blog.facilcloud.com\/noticias\/programacion-paralela-deberia-interesarte\/","title":{"rendered":"Programaci\u00f3n paralela: \u00bfDeber\u00eda interesarte?"},"content":{"rendered":"<p style=\"text-align: justify;\">La\u00a0programaci\u00f3n\u00a0paralela es el uso de varios procesadores trabajando en conjunto para dar soluci\u00f3n a una tarea en com\u00fan, estos se dividen el trabajo y cada procesador hace una porci\u00f3n del problema al poder intercambiar datos por una red de interconexi\u00f3n o a trav\u00e9s de memoria.<\/p>\n<p style=\"text-align: justify;\">Es tendencia que cada vez haya m\u00e1s n\u00facleos\u00a0en los procesadores, ya no s\u00f3lo por rendimiento sino por las ventajas en cuanto a ahorro de energ\u00eda, temperatura, entre otras cosas. Esto implica que casi cualquier aplicaci\u00f3n pueda trabajar en entornos con m\u00faltiples n\u00facleos, lo que hace realmente importante sacarle provecho a la programaci\u00f3n multi-subproceso.<\/p>\n<p><a href=\"https:\/\/www.facilcloud.com\/managed-cloud.php\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1771\" src=\"https:\/\/blog.facilcloud.com\/noticias\/wp-content\/uploads\/2015\/12\/Banners-navide\u00f1os_728x90.jpg\" alt=\"Banners navide\u00f1os\" width=\"1517\" height=\"187\" srcset=\"https:\/\/www.blog.facilcloud.com\/noticias\/wp-content\/uploads\/2015\/12\/Banners-navide\u00f1os_728x90.jpg 1517w, https:\/\/www.blog.facilcloud.com\/noticias\/wp-content\/uploads\/2015\/12\/Banners-navide\u00f1os_728x90-300x37.jpg 300w, https:\/\/www.blog.facilcloud.com\/noticias\/wp-content\/uploads\/2015\/12\/Banners-navide\u00f1os_728x90-768x95.jpg 768w, https:\/\/www.blog.facilcloud.com\/noticias\/wp-content\/uploads\/2015\/12\/Banners-navide\u00f1os_728x90-1024x126.jpg 1024w, https:\/\/www.blog.facilcloud.com\/noticias\/wp-content\/uploads\/2015\/12\/Banners-navide\u00f1os_728x90-235x29.jpg 235w, https:\/\/www.blog.facilcloud.com\/noticias\/wp-content\/uploads\/2015\/12\/Banners-navide\u00f1os_728x90-755x93.jpg 755w\" sizes=\"(max-width: 1517px) 100vw, 1517px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\"><strong>\u00bfPor qu\u00e9 es importante?<\/strong><a href=\"https:\/\/www.facilcloud.com\/es\/index.php\"><img loading=\"lazy\" decoding=\"async\" class=\"alignright wp-image-2250 size-full\" src=\"https:\/\/blog.facilcloud.com\/noticias\/wp-content\/uploads\/2015\/12\/iconos-programacion-multinucleos-01.jpg\" alt=\"Programaci\u00f3n paralela \u00bfDeber\u00eda interesarte?\" width=\"150\" height=\"150\" srcset=\"https:\/\/www.blog.facilcloud.com\/noticias\/wp-content\/uploads\/2015\/12\/iconos-programacion-multinucleos-01.jpg 150w, https:\/\/www.blog.facilcloud.com\/noticias\/wp-content\/uploads\/2015\/12\/iconos-programacion-multinucleos-01-80x80.jpg 80w\" sizes=\"(max-width: 150px) 100vw, 150px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">Antes, para aumentar el rendimiento de una aplicaci\u00f3n bastaba con moverla a una m\u00e1quina con un procesador m\u00e1s r\u00e1pido. Sin embargo, hoy en d\u00eda,<strong>\u00a0<\/strong>el rendimiento se obtiene a trav\u00e9s de sacarle partido a m\u00e1s.\u00a0Esto quiere decir que si queremos que una aplicaci\u00f3n llegue a ser escalable \u00e9sta debe sacar partido a m\u00faltiples hilos de ejecuci\u00f3n y, por lo tanto, a m\u00faltiples nodos de procesamiento.<\/p>\n<p style=\"text-align: justify;\">Este tipo de programaci\u00f3n paralela siempre ha sido muy compleja, sobre todo a la hora de depurar aplicaciones en las que existen muchas probabilidades de generar interbloqueos o \u201crace conditions\u201d. En su momento, con<span style=\"color: #0000ff;\"><a style=\"color: #0000ff;\" href=\"https:\/\/www.facilcloud.com\/es\/managed-cloud.php\" target=\"_blank\"> .NET <\/a><\/span>4.0 y Visual Studio se incluyeron nuevas bibliotecas, tipos y herramientas para facilitar la programaci\u00f3n multi-n\u00facleo, \u00e1rea de suma importancia para los programadores.<\/p>\n<p style=\"text-align: justify;\"><a href=\"https:\/\/www.facilcloud.com\/es\/index.php\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft wp-image-2251 size-full\" src=\"https:\/\/blog.facilcloud.com\/noticias\/wp-content\/uploads\/2015\/12\/iconos-programacion-multinucleos-02.jpg\" alt=\"Programaci\u00f3n paralela \u00bfDeber\u00eda interesarte?\" width=\"150\" height=\"150\" srcset=\"https:\/\/www.blog.facilcloud.com\/noticias\/wp-content\/uploads\/2015\/12\/iconos-programacion-multinucleos-02.jpg 150w, https:\/\/www.blog.facilcloud.com\/noticias\/wp-content\/uploads\/2015\/12\/iconos-programacion-multinucleos-02-80x80.jpg 80w\" sizes=\"(max-width: 150px) 100vw, 150px\" \/><\/a><\/p>\n<p style=\"text-align: justify;\">Muchos programadores recomiendan a <span style=\"color: #0000ff;\"><a style=\"color: #0000ff;\" href=\"https:\/\/www.facilcloud.com\/es\/managed-cloud.php\" target=\"_blank\">.NET <\/a><\/span>4.0 para realizar este tipo de tareas. Con \u00e9l disponemos de lo que se ha bautizado como \u201cParallel Extensions\u201d que est\u00e1n formadas por tres componentes:<\/p>\n<ul>\n<li style=\"text-align: justify;\"><strong>La biblioteca de tareas paralelas (TPL, Task Parallel Library)<\/strong>: esta biblioteca dentro del espacio de nombres System.Threading.Taks.Parallel\u00a0incluye construcciones para ejecutar tareas repetitivas independientes entre s\u00ed en paralelo y de forma autom\u00e1tica, como por ejemplo versiones paralelas de los bucles\u00a0For\u00a0y\u00a0ForEach.<\/li>\n<li style=\"text-align: justify;\"><strong>El motor de ejecuci\u00f3n paralela de Linq (PLINQ Execution Engine)<\/strong>: como se desprende de su nombre, se trata de una versi\u00f3n paralelizada de Linq to Objects, que nos permite lanzar consultas integradas en el lenguaje aprovechando la capacidad de paralelismo del sistema.<\/li>\n<li style=\"text-align: justify;\"><strong>Las estructuras de datos para coordinaci\u00f3n (CDS, Coordination data Structures)<\/strong>: ofrece un conjunto de primitivas de sincronizaci\u00f3n y de colecciones preparadas para multisubproceso (thread-safe) que simplifican los escenarios paralelizados. Por ejemplo, tenemos diccionarios, pilas y colas\u00a0thread-safe, y objetos especiales para sincronizaci\u00f3n de hilos como el\u00a0SpinWait\u00a0o el\u00a0SpinLock.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>La\u00a0programaci\u00f3n\u00a0paralela es el uso de varios procesadores trabajando en conjunto para dar soluci\u00f3n a una tarea en com\u00fan, estos se dividen el trabajo y cada procesador hace una porci\u00f3n del problema al poder intercambiar datos por una red de interconexi\u00f3n o a trav\u00e9s de memoria. Es tendencia que cada vez haya m\u00e1s n\u00facleos\u00a0en los procesadores, [&hellip;]<\/p>\n","protected":false},"author":123457,"featured_media":2258,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[285],"tags":[14,335,242,21,20,71,16,17,733,6,173,10,29,39,15,7,11,13,100,89,35,263],"class_list":["post-2249","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programadores","tag-net","tag-america","tag-aplicacion","tag-aplicaciones","tag-app","tag-apps","tag-cloud","tag-cloud-server","tag-developers","tag-elastic-cloud","tag-facilcloud","tag-java","tag-microsoft","tag-mysql","tag-node-js","tag-nube-elastica","tag-php","tag-phyton","tag-programadores","tag-software","tag-tecnologia","tag-web"],"_links":{"self":[{"href":"https:\/\/www.blog.facilcloud.com\/noticias\/wp-json\/wp\/v2\/posts\/2249","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.blog.facilcloud.com\/noticias\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.blog.facilcloud.com\/noticias\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.blog.facilcloud.com\/noticias\/wp-json\/wp\/v2\/users\/123457"}],"replies":[{"embeddable":true,"href":"https:\/\/www.blog.facilcloud.com\/noticias\/wp-json\/wp\/v2\/comments?post=2249"}],"version-history":[{"count":0,"href":"https:\/\/www.blog.facilcloud.com\/noticias\/wp-json\/wp\/v2\/posts\/2249\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.blog.facilcloud.com\/noticias\/wp-json\/wp\/v2\/media\/2258"}],"wp:attachment":[{"href":"https:\/\/www.blog.facilcloud.com\/noticias\/wp-json\/wp\/v2\/media?parent=2249"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.blog.facilcloud.com\/noticias\/wp-json\/wp\/v2\/categories?post=2249"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.blog.facilcloud.com\/noticias\/wp-json\/wp\/v2\/tags?post=2249"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}