Esta documentación está archivada y no tiene mantenimiento.

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

Visual Studio 2005

Download sample

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

Security noteNota 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ó.

Generar y ejecutar el ejemplo

NoteNota

Si ejecuta Visual C++ Express, podría tener que instalar Platform SDK antes de ejecutar este ejemplo. Para obtener información sobre cómo hacerlo, vea Cómo: Utilizar Visual C++ Express con Microsoft Platform SDK.

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

Mostrar: