Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-09-2012
LIGERO LIGERO is offline
Miembro
 
Registrado: jun 2007
Posts: 42
Poder: 0
LIGERO Va por buen camino
Problemas con Hebras

Buenas tardes amigos foreros:

Tengo un programa con una hebra que hace grabaciones en una base de datos sql server cada cuarto de hora y para ello utilizo la hebra.

Ver código.

Código Delphi [-]
unit Hebras;

interface

uses
  Classes;

type
  THebraCuartoHora = class(TThread)
      grabar : boolean;
      constructor Create; reintroduce; overload;
      procedure Execute; override;

  end;


var HebraCuartoHora : THebraCuartoHora;

implementation

 uses DateUtils, sysutils, globales, BBDDCogeneracion, logging;


constructor THebraCuartoHora.Create;
begin
   // llamamos al constructor del padre (TThread)
   inherited Create(True);
   grabar := true;

end;

procedure THebraCuartoHora.Execute;
var ahora: TdateTime;
    minutos, segundos : integer;


begin
  inherited;
  while not TerminarPrograma do
  begin
    ahora := now;
    minutos := MinuteOf(ahora);
    segundos := SecondOf(ahora);
    if ((minutos mod 15) = 0) and (segundos = 0) then
    begin
      // Incrementamos el contador de segundos y actualizamos la etiqueta
      if (grabar = true) then
      begin
        grabar := false;
        logger.log(elInfo,'::::::::::: Grabando Cuartos de Hora :::::::::::');
        try
          //InitializeCriticalSection(SeccionCritica);
          GrabaCuartosHora(ahora);
          //DeleteCriticalSection(SeccionCritica);
          logger.log(elInfo,'::::::::::: Cuartos de Hora Grabados :::::::::::');
        except
          logger.log(elerror,'******** Error Grabando Cuartos de Hora ********');
          grabar := true;
        end;
      end;
    end
    else
      grabar := true;
  end;
end;
end.

El problema es que la cpu se pone a 100% y baja bastante poco.

Qué puedo hacer.

Última edición por Casimiro Notevi fecha: 12-09-2012 a las 16:49:42.
Responder Con Cita
  #2  
Antiguo 12-09-2012
WkaymQ48 WkaymQ48 is offline
Miembro
NULL
 
Registrado: jul 2012
Posts: 43
Poder: 0
WkaymQ48 Va por buen camino
Pues deberías dejar descansar a la CPU

Prueba con esto:
Código Delphi [-]
  while not TerminarPrograma do
  begin
    Sleep(10); // <- Añadimos esta linea para decirle a windows que se lo tome con calma
Responder Con Cita
  #3  
Antiguo 13-09-2012
LIGERO LIGERO is offline
Miembro
 
Registrado: jun 2007
Posts: 42
Poder: 0
LIGERO Va por buen camino
Muchas gracias WKaymQ48. La verdad es que es una gran idea. De hecho le he puesto 100 en vez de 10 y por ahora funciona de coña. He intentado tambien con un temporizador que se ejecute cada minuto y cuando llegara el minuto 14, 29, 44 o 59 se ejecutara la hebra y durante un minuto a lo sumo se ejecuta y vuelve a paralizarla hasta que se vuelva a cumplir la condición, pero no ha resultado en tiempo de ejecución, aunque sí en tiempo de depuración. Curioso pero cierto.

Si alguien puede dar otra respuesta que considere buena, se aceptan

Muchas gracias
Responder Con Cita
  #4  
Antiguo 13-09-2012
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
¿Hebra? Como que le hemos pifiado... ¡Se les llama hilo! ¡HILO!

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Hebras en Builder c++ BC++ C++ Builder 3 19-01-2009 14:23:39
Hebras.... craven OOP 3 16-09-2003 01:57:51
Hebras.... craven OOP 1 15-09-2003 15:50:38


La franja horaria es GMT +2. Ahora son las 01:16:38.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi