logo logo
Home arrow Frontpage
Saturday, 11 October 2008
 
 
English English  Español Español  
Tag Cloud
Architectures Artificial Associations Books Brain Conscious Consciousness Forums Howto Machine Machine Consciousness Machines Microsoft Neuroscience Projects Publications Research Researchers Reviews Robot Robotics Robots Services Studio
Syndicate
 
AGI: Now is the Time
The Cognitive Approach to Conscious Machines
Sources of Consciousness
I Am a Strange Loop
The Making of the Memory
Theatre of the Mind
Introducción a CCR (Concurrency and Coordination Runtime) - Introducción al CCR Print E-mail
Written by Ana Santos y Raúl Arrabales   
Wednesday, 30 January 2008
Article Index
Introducción al CCR
Un Ejemplo Sencillo
Inicialización del CCR
Patrones Simples
Ejemplo de Interleave

Podemos incluir otro ejemplo, en el que se ve la utilidad de Arbiter.Interleave:


class SampleService
{
   Dispatcher dispatcher =
new Dispatcher(0, "Sample Service");
   DispatcherQueue taskQueue =
new DispatcherQueue();
   Port<
string> pState = new Port<string>();
   ServicePort pMain =
new ServicePort();
  
   ServicePort InitStatefull()
   {
        dispatcher.AddQueue(taskQueue);
        pState.Post(
"Hello");
        Arbiter.Activate(taskQueue,
        Arbiter.Interleave(
          
new TeardownReceiverGroup(Arbiter.Receive(false, pMain, Shutdown)),
          
new ExclusiveReceiverGroup(Arbiter.Receive(true, pMain, Update)),
          
new ConcurrentReceiverGroup(Arbiter.Receive(true, pMain, GetState)))
        );
      
return pMain;
   }
}


En este ejemplo vemos que se han seguido los mismos pasos que en el ejemplo anterior. La diferencia es que añadimos un método (InitStatefull()) que devuelve un objeto de la clase ServicePort y en él usamos Arbiter.Interleave, que nos proporciona garantías de protección hasta que el proceso halla terminado. Los tres parámetros que toma Interleave son:

- TearDownReceiverGroup: se añaden las tareas que hay que realizar sólo una vez al terminar todo.

- ExclusiveReceiverGroup: se ponen las tareas que se tienen que ejecutar en serie (sin concurrencia).

- ConcurrentReceiverGroup: se ponen las tareas que se pueden ejecutar en paralelo sin problemas (porque no tienen dependencias de datos entre ellas).

Un ejemplo más concreto del uso de Interleave sería el siguiente:


Port<WebResponse> responsePort = null;
Port<Exception> failurePort = null;
for (Int32 n = 0; n < c_ImageUrls.Length; n++)
{
   WebRequest webReq = WebRequest.Create(c_ImageUrls[n]);
   ApmToCcrAdapters.GetResponse(webReq, ref responsePort, ref failurePort);}

   Arbiter.Activate( dq, Arbiter.Interleave(
      
       new TeardownReceiverGroup (Arbiter.Receive (false, failurePort, delegate(Exception e)
                   {Msg("At least 1 GetResponse failed");})),

       new ExclusiveReceiverGroup(),

       new ConcurrentReceiverGroup(Arbiter.Receive(true, responsePort,delegate(WebResponse response)
                  {Byte[] data = new Byte[response.ContentLength];
                   response.GetResponseStream().Read(data, 0, data.Length);
                   Msg("RequestUri={0}", response.ResponseUri); })
    )));


Podemos comprobar en este ejemplo que en la llamada al método Interleave tenemos los tres parámetros citados anteriormente. En concreto, primero se crea una instancia de TeardownReceiverGroup, que ejecutará el receptor de la clase Arbiter una vez acabado todo. Si saltara la excepción, mostraría un mensaje por pantalla: "At least 1 GetResponse failed". En cuanto al segundo parámetro: ExclusiveReceiverGroup, no incluye ninguna tarea para ser ejecutada. Por último, el parámetro ConcurrentReceiverGroup, ejecutará el receptor del puerto de respuesta (responsePort), que no tiene dependencia con ningún dato.


Comparte tus dudas, comentarios o sugerencias en el Foro de Robotics Studio en Español.

 


Related Items:

  1. Microsoft Robotics Studio Pages
  2. Finding papers about consciousness and robotics
  3. Cognitive Robotics
  4. Polymorphic Robotics
  5. Microsoft Robotics Studio October 2006 CTP
  6. Microsoft Robotics Studio November 2006 CTP
  7. Robotics Studio 1.0 Released
  8. RoboCup Simulator for Robotics Studio
  9. Robotics Studio 1.5 May 2007 CTP
  10. Robotics Studio 1.5 Released

Add as favourites (56) | Quote this article on your site | Views: 1358 | E-mail

  Be first to comment this article
RSS comments

Only registered users can write comments.
Please login or register.

Powered by AkoComment Tweaked Special Edition v.1.4.4



Last Updated ( Friday, 01 February 2008 )
 





Lost Password?
No account yet? Register
Spotlight

Conscious-Robots.com pages for MSRS (Microsoft Robotics Studio)

These pages include information, MSRS services, C# sample code, and resources for the programming of real and simulated robots using MSRS. These pages can be of interest for anyone working on autonomous mobile robotics. Most of the code and applications included in this section is intended for its use in academic projects on robotics.

 

 
Polls
Can Robots Become Conscious?
 
Categories
Last Posts in Forum
 
Top!
Advertising links: Credit Card Consolidation - Wills - Loan - Debt
Top!