lunes, 30 de julio de 2007

Programación de Hilos COn WxDevcpp

Para realizar la programación de Hilos con wxDevcpp utilizaremos la clase wxThread la cual contiene los métodos y propiedades para el trabajo con Hilos.
aquí un ejemplo de un programa que genera 20 números aleatorios por cada Hilo de ejecución

#include "wx/defs.h"
#include "wx/thread.h"
#include "stdlib.h"
#include "stdio.h"
#include "wx/app.h"
class Hilo_cliente : public wxThread // Creando una clase derivada de wxThread
{
public:
// Declarando el constructor el cual recibirá como parámetro un entero que representa el
// numero de hilo en ejecución

Hilo_cliente(int hilo) : wxThread()
{
numero_hilo=hilo;
Create();
}
//--------Función Entry aquí se colocara todo el código que seamos que sea multitarea
virtual ExitCode Entry();
//------------Función cuando se sale del hilo--------------
virtual void OnExit();
private:
int numero_hilo ; // Esta propiedad contendrá el número de hilo
} ;

void Hilo_cliente::OnExit()
{
wxPrintf("****************Saliendo del hilo %d************\n",this->GetId());
}
wxThread::ExitCode Hilo_cliente::Entry()
{
unsigned long res = 1;
int i,j;
for(i=0;i<20;i++)
printf("Hilo Nº:%d Numero:%d\n",numero_hilo,rand());
return (ExitCode)res;
}

int main(int argc, char *argv[])
{
//---------Utilizar estas dos lineas para la verificación de las opciones de construcción----
//--------y para inicial izar y limpiar las librerías wxWindows
wxApp::CheckBuildOptions(WX_BUILD_OPTIONS_SIGNATURE, "program");
wxInitializer initializer;
if (!initializaer)
{
printf("Error al inicializar las librerias wxWindows");
return -1;
}

int i;
printf("****************iniciando ejecución del Programa*****************\n");
for(i=1;i<6;i++)
{
Hilo_cliente *hilo1=new Hilo_cliente(i);
hilo1->Run();
}
system("pause");
return 1;
}

En las opciones del proyecto se debe especificar que es una aplicación de consola.

La versión de wxDevcpp 6.10.2 tiene problemas para realizar las actualizaciones y agregar paquetes para solucionar este problema se crea un archivo con el nombre mirrors.cfg con el siguiente contenido :

[WebUpdate mirrors]
wxDev-C++ DevPak server=http://joelsplace.sg/projects/wxdsgn/devpaks/
Dev-C++ primary devpak server=http://heanet.dl.sourceforge.net/sourceforge/dev-cpp/
devpaks.org Community Devpaks=http://devpaks.sourceforge.net/

este archivo lo guardamos en la configuración del usuario de windows en mi caso es :
"C:\Documents and Settings\Administrador\Datos de programa\Dev-Cpp"
con eso ya podremos actualizar y agregar paquetes para trabajar con wxDevcpp

2 comentarios:

Unknown dijo...

Hola, muy bueno tu tutorial, se ve que conoces del tema, queria saber si me puedes ayudar tengo un problemita con esa version de wxDev-C++ 6.10.2 no compila la aplicacion,estoy empezando a usar este IDE y me di con este problema,este es el registro de compilación:


Compilador: Default GCC compiler
Building Makefile: "C:\Documents and Settings\Julio\Mis documentos\Archivos Julio\Programacion\ventanita\Makefile.win"
Ejecutando make...
C:\Archivos de programa\Dev-Cpp\bin\mingw32-make.exe -f "C:\Documents and Settings\Julio\Mis documentos\Archivos Julio\Programacion\ventanita\Makefile.win" all
C:\Archivos de programa\Dev-Cpp\bin\g++.exe -c VentanitaFrm.cpp -o Objects/MingW/VentanitaFrm.o -I"C:/Archivos de programa/Dev-Cpp/lib/gcc/mingw32/3.4.2/include" -I"C:/Archivos de programa/Dev-Cpp/include/c++/3.4.2/backward" -I"C:/Archivos de programa/Dev-Cpp/include/c++/3.4.2/mingw32" -I"C:/Archivos de programa/Dev-Cpp/include/c++/3.4.2" -I"C:/Archivos de programa/Dev-Cpp/include" -I"C:/Archivos de programa/Dev-Cpp/" -I"C:/Archivos de programa/Dev-Cpp/include/common/wx/msw" -I"C:/Archivos de programa/Dev-Cpp/include/common/wx/generic" -I"C:/Archivos de programa/Dev-Cpp/include/common/wx/fl" -I"C:/Archivos de programa/Dev-Cpp/include/common/wx/gizmos" -I"C:/Archivos de programa/Dev-Cpp/include/common/wx/html" -I"C:/Archivos de programa/Dev-Cpp/include/common/wx/mmedia" -I"C:/Archivos de programa/Dev-Cpp/include/common/wx/net" -I"C:/Archivos de programa/Dev-Cpp/include/common/wx/ogl" -I"C:/Archivos de programa/Dev-Cpp/include/common/wx/plot" -I"C:/Archivos de programa/Dev-Cpp/include/common/wx/protocol" -I"C:/Archivos de programa/Dev-Cpp/include/common/wx/stc" -I"C:/Archivos de programa/Dev-Cpp/include/common/wx/svg" -I"C:/Archivos de programa/Dev-Cpp/include/common/wx/xml" -I"C:/Archivos de programa/Dev-Cpp/include/common/wx/xrc" -I"C:/Archivos de programa/Dev-Cpp/include/common/wx" -I"C:/Archivos de programa/Dev-Cpp/include/common" -D__WXMSW__ -D__GNUWIN32__ -D__WIN95__ -fno-exceptions -fno-pcc-struct-return -fstrict-aliasing -Wall -D__WXMSW__ -D__GNUWIN32__ -D__WIN95__ -fexpensive-optimizations -O3

"C:\Archivos" no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.

C:\Archivos de programa\Dev-Cpp\bin\mingw32-make.exe: *** [Objects/MingW/VentanitaFrm.o] Error 1

Ejecución Terminada


No se quiza las rutas de los programas de compilacion y debugger. Agradeceria tu ayuda, que te vaya bien.

Unknown dijo...

Instala devcpp en una ruta sin espacios. Si te fijas en el error:

"C:\Archivos" no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.

Ahi te das cuenta que el problema es el primer espacio en la ruta del comando. Proba ponerlo en algo como C:\Dev-Cpp y se te solucionara el problema