Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Semaphore CreateSemaphore... ReleaseSemaphore

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Semaphore CreateSemaphore... ReleaseSemaphore Responder citando

Hola...

Quien haya trabajado con las funciones
Semaphore CreateSemaphore... ReleaseSemaphore...
Necesito que me ayude y me envíe código de ejemplo en C++ o C++Builder donde las utilice...
gracias...
Mi correo es joseluisbz@bigfoot.com

Volver arriba
Mensaje    Asunto: Semaphore CreateSemaphore... ReleaseSemaphore Responder citando

No tengo ejemplos sobre el uso de esa función pero quizás te interese una ayuda en linea de la API Win32 http://home1.swipnet.se/~w-10159/files/win32hlpfiles/
(si es que no la tienes) en la que se explica su uso.
Volver arriba
Mensaje    Asunto: Semaphore CreateSemaphore... ReleaseSemaphore Responder citando

te mando mi código...

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
bool UseMutex;
HANDLE hMutex;
HANDLE hSemaforo;
int GlobalData;
Mihilo *T1;
Mihilo *T2;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{

Form1->Caption=20;
//hMutex = CreateMutex(0,false,0);
int inicio_semaforo=atoi(Form1->Edit3->Text.c_str());
hSemaforo = CreateSemaphore(NULL,inicio_semaforo,1,0);

//UseMutex=false;
T1 = new Mihilo(false,2);
// T2 = new Mihilo(false,1);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
CloseHandle(hMutex);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
delete T1;
delete T2;
}
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include <stdio.h>
#include "Unit2.h"
#include "Unit1.h"
#include <winbase.h>
#pragma package(smart_init)
long previo=0;
//extern bool UseMutex;
extern HANDLE hSemaforo;
void Traza(AnsiString s,bool afichero);

//---------------------------------------------------------------------------

// Important: Methods and properties of objects in VCL can only be
// used in a method called using Synchronize, for example:
//
// Synchronize(UpdateCaption);
//
// where UpdateCaption could look like:
//
// void __fastcall Unit2::UpdateCaption()
// {
// Form1->Caption = "Updated in a thread";
// }
//---------------------------------------------------------------------------

__fastcall Mihilo::Mihilo(bool CreateSuspended, int x)
: TThread(CreateSuspended)
{
campo=x;
contador=10000;
}
//---------------------------------------------------------------------------
void __fastcall Mihilo::RunUpdate()
{
char * cadena=(char *)malloc(20);
int x=atoi(Form1->Edit1->Text.c_str());
if(campo==1)
{
x++;
}
else if(campo==2)
{
x--;
}
Form1->Edit1->Text=itoa(x,cadena,10);
free(cadena);
}
//---------------------------------------------------------------------------
void __fastcall Mihilo::Execute()
{
bool z=true;
for(;Wink
{
Traza("asdsdf",true);
WaitForSingleObject(hSemaforo,INFINITE);
if(campo==1)
{
//if(Form1->Caption<20)
{Synchronize(RunUpdate);}
}else if(campo==2)
{
//if(Form1->Caption>1)
{Synchronize(RunUpdate);}
}
z=ReleaseSemaphore(hSemaforo,1,&previo);
}
}
//---------------------------------------------------------------------------

void Traza(AnsiString s,bool afichero)
{

long previo=0;

AnsiString linea=(TDateTime::CurrentDateTime()).DateTimeString()+" : "+s+"\n";
FILE *f;
//zona crítica, intentar salir lo antes posible de ella.
if (afichero)
{
WaitForSingleObject(hSemaforo,INFINITE);
f=fopen("d:\\traza.txt", "a");
fprintf(f,linea.c_str());
fclose(f);
ReleaseSemaphore(hSemaforo,1,&previo);
}

//mostrar form con error.
TForm *mensaje=new TForm(Application);
mensaje->Caption=linea;
mensaje->Show();
return;
}

Volver arriba
Mensaje    Asunto: Semaphore CreateSemaphore... ReleaseSemaphore Responder citando

Muchísimas gracias por responder el mensaje...

Te cuento que ya había superado en parte el problema...

Ahora lo que tengo es un puntero perdido en la misma aplicación.

Volver arriba
Mensaje    Asunto: Semaphore CreateSemaphore... ReleaseSemaphore Responder citando

Muchísimas gracias por responder el mensaje...

Te cuento que ya había superado en parte el problema...

Ahora lo que tengo es un puntero perdido en la misma aplicación.

Volver arriba
Mensaje    Asunto: Semaphore CreateSemaphore... ReleaseSemaphore Responder citando

Esta interesante el semaforo. pero no he podido hacer que no funcione porque el codigo de las librerias no esta incluido y me gustaría probarlo todo completo.

Lo estoy probando en Borland c++ 3.11. Me podrían informar al respecto?

Volver arriba
Mensaje    Asunto: Semaphore CreateSemaphore... ReleaseSemaphore Responder citando

es que es ilustrativo. si quieres dime tu e-mail y te paso el zip con el programa...
Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.