Hilos en Visual C++ utilizando la clase CWinThread

Por:ivancp,enviado 14 Mar 2004
Este es un programa que demuestra como utilizar la clase CWinThread en forma sencilla. El ejemplo utiliza tres hilos y comprueba la rapidez de tres métodos de ordenamiento conocidos: QuickSort, SelectSort y el metodo de Burbuja, y se puede ver que uno de ellos es mucho mas eficiente, y el gran perdedor de esta prueba es el método de la Burbuja.

thread_demo1.gif
Aplicación de ordenamiento simultaneo ejecutándose


Primero se crera una clase base para el manejo de los hilos, en la que se implementarán funciones comunes en todas las demás clases derivadas. En cada clase derivada se implementa una funcion que efectua el ordenamiento de ciertos datos.

thread_demo2.gif
Diagrama de clases que muestra como debe heredarse de la clase CWinThread


El codigo que les voy a mostrar es parte de la clase CQuickSort con la funcion que ejecuta la operacion de ordenado y la otra la funcion que contiene el algoritmo de ordenamiento QuickSort. Todo esta en el proyecto en Visual C++ que adjunto al artículo.

Code: Seleccionar todo
  1. int CQuickSort::Run()

  2. {

  3.   m_iIterac = 0;

  4.   quickSort(0,MAX_VALORES);

  5.   return 0;

  6. }

  7.  

  8. void CQuickSort::quickSort(int left, int right)

  9. {

  10.   int leftIndex = left;

  11.   int rightIndex = right;

  12.   int partionElement;

  13.  

  14.   if ( right > left)

  15.   {

  16.  

  17.   partionElement = m_piValores[ ( left + right ) / 2 ];

  18.  

  19.     while( leftIndex <= rightIndex )

  20.     {

  21.  

  22.       while( ( leftIndex < right ) &&

  23.         ( m_piValores[leftIndex] < partionElement ) )

  24.         ++leftIndex;

  25.  

  26.       while( ( rightIndex > left ) &&

  27.         ( m_piValores[rightIndex] > partionElement ) )

  28.         --rightIndex;

  29.  

  30.       if( leftIndex <= rightIndex )

  31.       {

  32.         Intercambiar(leftIndex, rightIndex);

  33.         ++leftIndex;

  34.         --rightIndex;

  35.       }

  36.     }

  37.  

  38.     if( left < rightIndex )

  39.       quickSort( left, rightIndex );

  40.    

  41.     if( leftIndex < right )

  42.       quickSort( leftIndex, right );

  43.   }

  44. }

Archivos Adjuntos

  • thread_demo.zip30.43 KiB
    Código fuente del proyecto de hilos con el ordenamiento simultaneo.

Otros Artículos en esta sección

  • ImageCtrl: Un control para visualizar imagenes
    Puedes usar este control en tus aplicaciones Visual C++ para visualizar imágenes dentro de un formulario MFC o también en entornos derivados de CWnd.
    Por: MicroLogic©Software,2006-03-02
  • CStatic de colores en Visual C++
    Un control personalizado basado en la clase CStatic en el que se puede cambiar el color de fondo y color texto, es muy útil para darle una apariencia mejorada a nuestras aplicaciones Visual C++
    Por: MicroLogic©Software,2005-04-20
  • NSChart - Visual C++
    Chart para visual c++, control que visualiza gráficos de barra y sectores en un dialogo MFC, puedes utilizarlo en tus aplicaciones para enriquecerlo mostrando histogramas y gráficos de sectores.
    Por: ivancp,2004-07-26
¿Alguna duda? Sientete libre de hacer tus pruntas en nuestro:
foro deVisual C++ »