31
PROGRAMACIÓN CONCURRENTE EN LENGUAJES FUNCIONALES: CONCURRENT HASKELL Rafael Álvarez López Fernando Ávila Ferrer

ConcurrenciaEnLF

Embed Size (px)

DESCRIPTION

Concurrencia en lenguajes de programacion

Citation preview

PROGRAMACIN CONCURRENTE EN LENGUAJES FUNCIONALES:CONCURRENT HASKELLRafael lvarez LpezFernando vila Ferrer2NDICE1. INTRODUCCIN1.1 Motivacin y Orgenes1.2 Concurrencia y lenguajes uncionales2. CONCURR!NT "#$%!&&2.1 'rocesos2.2 $incroni(acin y co)unicacin2.* $e)+oros2., Otras o-eraciones concurrentes2.. 'ro/uctor0consu)i/or2.1 Canales*. CONC&U$ION!$,. R!2!R!NCI#$*1. INTRODUCCIN&a necesi/a/ /e orecer concurrencia en el acceso a los recursos co)-utacionales se re)onta a los -ri)eros siste)as o-erativos. #-rovec3ar al )+4i)o los recursos co)-utacionales ue una necesi/a/ a-re)iante5 so6re to/o en la 7-oca en 8ue las co)-uta/oras eran caras y escasas9 el siste)a o-erativo tena 8ue orecer la ejecucin concurrente y segura /e -rogra)as /e varios usuarios5 8ue /es/e /istintas ter)inales utili(a6an un solo -rocesa/or5 y as surgi la necesi/a/ /e intro/ucir algunos conce-tos /e programacin concurrente -ara -rogra)ar los siste)as o-erativos.,1.1 MotivacinO!"#$n$%!4isten siste)as in3erente)ente concurrentes: los siste)as reactivos.#-arte /e esta )otivacin e4isten otras /os )otivaciones -rinci-ales5 8ue /e 3ec3o ueron anteriores en el tie)-o a la utili(acin /e la -rogra)acin concurrente -ara la construccin /e siste)as reactivos:!4-lotacin /e ar8uitecturas -aralelas -ara o6tener ganancia en la veloci/a/ /e ejecucin ;'rogra)acin 'aralelaIO es asi)7trico. Cuan/o un -roceso ejecuta un or>IO crea un -roceso 3ijo 8ue se ejecuta concurrente)ente al -a/re.12&.& Sinc!oni5acinco-'nicacin&os -rocesos -ue/en necesitar acceso e4clusivo a algunos o6jetos co)o -or eje)-lo ic3eros. &a )anera /e i)-le)entar este acceso e4clusivo re8uiere una varia6le co)-arti/a )uta6le o un se)+oro.'ara 8ue un -roceso -ue/a leer una ca/ena /e valores -ro/uci/a -or varios -rocesos es -ro-orcionan/o una o-eracin no /eter)inista /e or/enacin. 1*T4$ M6a! aUn valor /el ti-o MIar t5 -ara algHn ti-o t5 es el no)6re /e una -osicin /e )e)oria 8ue -ue/a estar vaca o contener un valor /e ti-o t. # su ve( so6reMIar se -ue/en reali(arlas siguientes o-eraciones:neGMIar :: IO ;MIar a< Crea una nueva MIarta>eMIar :: MIar a BC IO aJlo8uea 3asta 8ue la -osicin sea no vaca. !ntonces lee y /evuelve el valor /ejan/o la -osicin vaca.-utMIar :: MIar a BC a BC IO ;eMIar so6re /ic3a varia6le5 se selecciona uno -ara 8ue lo -rocese. 'ue/e -ro/ucir error utili(arlo so6re una varia6le 8ue ya contenga un valor.1,M6a!!l ti-o MIar -ue/e ser usa/o /e tres )aneras /ierentes:'ue/e ser usa/o co)o una versin sncroni(a/a /el ti-o MutIar.'ue/e ser e)-lea/o co)o un ti-o /e canal5 /on/e ta>eMIar y 'utMIar uncionan co)o reci6ir y enviar.!l MIar -ue/e ser usa/o co)o un se)+oro 6inario5 /on/e los signal y los Gaits son i)-le)enta/os con -utMIar y ta>eMIar res-ectiva)ente.1.&.7 S$-.*o!o%#un8ue se -ue/e i)-le)entar con un MIar usan/olas o-eraciones-utMIar y ta>eMIar5 los se)+oros ta)6ien est+n i)-le)enta/os en Concurrent "as>ell.$e)+oro 6inario:/ata K$e)neGK$e) :: Int BC IO K$e) GaitK$e) :: K$e) BC IO ;< signalK$e) :: K$e) BC IO ;< 11&.7 S$-.*o!o% $e)+oros /e canti/a/ general:/ata K$e)NneGK$e)N :: Int BC IO K$e)N GaitK$e)N :: K$e)N BC Int BC IO ;< signalK$e)N :: K$e)N BC Int BC IO ;< 1?&.8 Ot!a% o4$!acion$% conc'!!$nt$%or>IO :: IO a BC IOBBCrea -roceso 3ijot3rea/Delay :: Int BC IO ;< L Dor)ir /urante n )icrosegun/osneG!)-tyMIar :: IO ;MIar a< L Crear Mvar vaconeGMIar :: a BC IO ;MIar a< L Iniciali(ar MI#rta>eMIar :: MIar a BC IO a L ta>e 6lo8ueante-utMIar :: MIar a BC a BC IO ;< L -ut 6lo8ueantetryTa>eMIar :: MIar a BC IO ;May6e a< L ta>e no 6lo8ueantetry'utMIar :: MIar a BC a BC IO Jool L -ut no 6lo8ueanteis!)-tyMIar :: MIar a BC IO Jool BB Test /e Mvar vacosGa-MIar :: MIar a BC a BC IO a BBB Interca)6ia el valor /e Mvar1@&.9 P!o1'cto!:con%'-i1o!MIar -ue/e ser usa/o -ara i)-le)entar una cone4in entre -ro/uctor y consu)i/or. !l -ro/uctor guar/a ele)entos en el MIar y el consu)i/or los saca.!l -ro6le)a es 8ue no 3ay na/a 8ue i)-i/a 8ue el -ro/uctor escri6a un segun/o valor antes /e 8ue el consu)i/or 3aya saca/o el -ri)ero.!ste -ro6le)a se soluciona con un segun/o MIar -ara )anejar conir)aciones entre consu)i/or y -ro/uctor. &la)are)os a la a6straccin resultante CIar ;varia6le /e canalell.#=a/ien/o or>IO y MIars a "as>ell /a)os un salto cualitativo en cuanto a la canti/a/ /e a-licaciones 8ue -o/e)os escri6ir. &as e4tensiones son sencillas y si)-les /e /escri6ir.!n la actuali/a/ "as>ell y sus versiones concurrentes est+n sien/o e)-lea/os /e )anera co)ercial co)o 3erra)ienta /e -rogra)acin -ara servi/ores5 a-ortan/o una nueva )anera /e -rogra)ar -otente y elegante. *18. REFERENCIAS3tt-:00GGG.3as>ell.org Ru(5 J.C.9 Wuti7rre(5 2.9 Wuerrero5 '.9 Wallar/o5 Z.!.: Ra5onan1o con +a%3$((. Una int!o1'ccin a (a P!o#!a-acin F'nciona(. $ervicio re-rogr. ;OC[< !.T.$.I.I.5 Universi/a/ /e M+laga. 2DDD3tt-:00GGG.3as>ell.org0g3c0/ocs0latest03t)l0li6raries06ase0Control.Concurrent.3t)lTac3(in# t2$ A