Ejemplo FREETHRD: cliente multiproceso y servidor de subprocesamiento libre con compatibilidad con COM del compilador

Actualización: noviembre 2007

En este ejemplo se muestra un cliente multiproceso y un servidor de subprocesamiento libre con compatibilidad con COM del compilador

Este ejemplo consta de las siguientes partes.

  • Freclien, un cliente multiproceso

  • Freserve, un servidor en proceso con subprocesamiento libre

Nota de seguridad:

Este código de ejemplo se proporciona para ilustrar un concepto y no debe utilizarse en aplicaciones o sitios Web, ya que quizás no ilustre las prácticas de codificación más seguras. Microsoft no asume ninguna responsabilidad por daños incidentales o consecuentes en caso de que el código de ejemplo se utilice para propósitos distintos de aquellos para los que se concibió.

Para obtener ejemplos e instrucciones para su instalación:

  • En el menú Ayuda de Visual Studio, haga clic en Ejemplos.

    Para obtener más información, vea Localizar archivos de ejemplo.

  • La lista de ejemplos completa con la versión más reciente está disponible en línea en la página Visual Studio 2008 Samples.

  • También encontrará ejemplos en el disco duro de su equipo. De manera predeterminada, los ejemplos y el archivo Léame se copian en una carpeta bajo \Archivos de programa\Visual Studio 9.0\Samples\. Para las versiones Express de Visual Studio, todos los ejemplos están en línea.

Generar y ejecutar el ejemplo

Para generar y ejecutar este ejemplo

  1. Abra la solución freethrd.sln.

  2. Genere el proyecto del servidor y después el proyecto del cliente.

  3. Establezca el proyecto cliente como proyecto de inicio (haga clic con el botón secundario del mouse (ratón) en el nodo del proyecto y haga clic en Establecer como proyecto de inicio) y ejecute el ejemplo.

Cómo funciona el ejemplo

El ejemplo Freclien genera varios subprocesos para crear y utilizar el objeto COM COBall proporcionado por el servidor de subprocesamiento libre Freserve. El objeto COBall no genera ningún subproceso, sino que responde de forma pasiva a las solicitudes de la interfaz IBall desde muchos subprocesos de cliente posibles. El cliente Freclien crea y controla un objeto COBall a través de la interfaz IBall que expone el objeto. Mientras tres subprocesos de Freclien mueven la bola mediante llamadas a IBall::Move, el subproceso principal restante utiliza un temporizador del sistema para obtener actualizaciones cronometradas de la posición, el tamaño y el color del objeto COBall. Este subproceso principal utiliza esos datos, obtenidos llamando a IBall::GetBall, para mostrar imágenes de instantáneas gráficas de la bola en la ventana principal del cliente.

En el ejemplo Freserve, el objeto COBall actualiza internamente su propiedad de color para reflejar el último subproceso que llamó al método Move del objeto. El subproceso de presentación utiliza estos datos para cada imagen de la bola que muestre. A medida que la bola se mueva, cambia de color para reflejar cada subproceso que la mueve. También deja un rastro que proporciona un impactante historial visual de estos subprocesos pasajeros. Este rastro muestra que, con el modelo de subprocesamiento libre de COM, cada subproceso que realice solicitudes de interfaz al mismo objeto tiene acceso al objeto del subproceso de llamada. Cada color diferente del objeto bola individual representa un subproceso de llamada distinto.

Este ejemplo utiliza la compatibilidad con COM nativa del compilador. Ofrece un ejemplo de interfaz COM personalizada que calcula referencias de las estructuras RECT y POINT con el modelo de subprocesamiento libre. Ilustra el uso del atributo exclude de la directiva #import.

Vea también

Referencia

Compiler COM Support

Otros recursos

Ejemplos de compatibilidad con COM del compilador

Ejemplos generales