logo logo
Inicio arrow Portada
Thursday, 02 de September de 2010
 
 
Español
Menú Principal
Inicio
Robots Conscientes...
Técnicas de IA...
Neurociencia...
Científicos...
Publicaciones...
Análisis...
Bibliografía CA
Robotics Studio...
Foros...
Blog...
Portada
Contenido Reciente
Próximos Eventos
24.Sep. 2010

Neuronal Dynamics Approaches to Cognitive Robotics
Bochum. Germany
08.Oct. 2010

Third EUCogII Members Conference
Palma de Mallorca, Spain
Etiquetas
Análisis Artificial Científicos Conciencia Conciencia Artificial Conferencias Consciencia Consciencia Artificial Consciousness Developer Documentación Documentation Español Investigación Investigadores Publicaciones Reviews Robotics Robots Spanish Studio VPL artificial conciencia
Destacados
Más
Preferidos
Lista MCexperts
Preguntas FAQ
Glosario
Mapa Web
   
ConsScale
   

MC-Papers: Base de datos de artículos de Conciencia Artificial

ConsScale: Una escala para medir el desarrollo de la conciencia en agentes artificiales (www.ConsScale.com)

Introducción a CCR (Concurrency and Coordination Runtime) - Introducción al CCR Imprimir E-Mail
escrito por Ana Santos y Raúl Arrabales   
Wednesday, 30 de January de 2008
Índice
Introducción al CCR
Un Ejemplo Sencillo
Inicialización del CCR
Patrones Simples
Ejemplo de Interleave

Podemos poner un sencillo ejemplo de todo lo visto anteriormente: 

 


Port<int> portInt = new Port<int>(); // 1
portInt.Post(10); // 2
Console.WriteLine(portInt.ItemCount); // 3

Dispatcher dispatcher = new Dispatcher(0, "sample dispatcher"); // 4
DispatcherQueue taskQueue = new DispatcherQueue("sample queue", dispatcher);//5

Arbiter.Activate(taskQueue, Arbiter.Receive( false, portInt, delegate(int item)
{Console.WriteLine("Received item:" + item);})); // 6

port.Post(5); //7



La explicación del código anterior, es la siguiente:

1- Creamos un puerto que acepta instancias de tipo System.Int32 (int). 

2- Añadimos el número 10 al puerto usando el método Post().

3- Mostramos por pantalla el número de elementos que contiene el puerto.

4- Creamos un objeto de la clase Dispatcher con 0 hilos, esto lo que hace es que el CCR crea un hilo para cada CPU por defecto.

5- Se crea una instancia DispatcherQueue, (es decir, una cola de proceso), pasándole cómo parámetros el nombre “sample queue” y una referencia de la clase Dispatcher, creada anteriormente.

6- Realizamos una llamada al método Activate de la clase Arbiter, pasándole cómo parámetros: una referencia de la clase DispatcherQueue, creada anteriormente. Un nuevo elemento Arbiter (mediador), en este caso, al usar el método Receive, este mediador está a la escucha en el puerto “portInt”, creado también anteriormente. Además se pasa un delegado (o método anónimo), que será el encargado de la ejecución cuando se añada un elemento al puerto en cuestión.
 
Nota: El método Activate, sirve para registrar el Arbiter indicado.

7- El elemento (entero 5) ya se ha añadido al puerto, se pasa a la ejecución del delegado.

Cuando el elemento se ha enviado al puerto con un receptor, lo que ocurre dentro de la implementación del puerto es lo siguiente:

1- Se crea un contenedor para el valor fijado. La clase contenedor, IPortElement, permite que el CCR encole los elementos y asigne a cada elemento la tarea correspondiente, independientemente del tipo de elemento.
 
2- El contenedor es encolado.

3- Si la lista de recibidores no es nula y hay al menos un recibidor, el puerto podrá llamar al método ReceiverTask. Evaluate que decide, junto con el mediador, si el elemento puede ser consumido (es decir, ejecutado por el método o delegado especificado).

4- El puerto llama al método taskQueue.Enqueue con la tarea devuelta en la ejecución de Evaluate en el receptor.



Modificado el ( Friday, 01 de February de 2008 )
 





¿Recuperar contraseña?
¿Quieres registrarte? Hazlo aquí
 Conscious Robots RSS FeedFuente RSS de Conscious Robots

Encuéntranos en Facebook

Síguenos en TwitterSíguenos en twitter
Encuestas
¿Puede Ser Consciente un Robot?
 
Categorías
Mensajes en el Foro
 
CR
miel continental