Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 17-01-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
No puede hacerse de la manera que lo describís, pero si puede hacerse.

Cada hilo puede tener una mascara de afinidad con CPU's diferente. El sistema utiliza esa mascara para asignar los hilos con diferentes cpu's.

Esta mascara se establece llamando a la función SetThreadAffinityMask, declarada en la unidad Windows.

En delphi3000, encontré este artículo, que te provee de una clase que ya encapsula esto en una propiedad.

Código Delphi [-]
unit ExThread;

interface

uses
  Classes;

type
  TExThread = class(TThread)
  private
    FAffinityMask: DWord;
    procedure SetAffinity(const Value: DWord);
    { Private declarations }
  protected
    procedure Execute; override;
  public
    property AffinityMask : DWord read FAffinityMask write SetAffinity;
  end;

implementation

{ Important: Methods and properties of objects in VCL can only be used in a
  method called using Synchronize, for example,

      Synchronize(UpdateCaption);

  and UpdateCaption could look like,

    procedure TExThread.UpdateCaption;
    begin
      Form1.Caption := 'Updated in a thread';
    end; }

{ TExThread }

procedure TExThread.Execute;
begin
  { Place thread code here }
end;

procedure TExThread.SetAffinity(const Value: DWord);
begin
  FAffinityMask := SetThreadAffinityMask(Handle,Value);
  if FAffinityMask = 0 then raise Exception.Create('Error setting thread affinity mask : ' + IntToStr(GetLastError));
end;

end.

La mascara de afinidad, es un mapa de bits, donde el bit 1 se corresponde con el cpu 0

así, si queres que un hilo se ejecute solamente en el cpu 3 (de una core 2 quad, por ejemplo), la mascara de afinidad será $8 (en delphi) o 0x8 (en c).

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate

Última edición por jachguate fecha: 17-01-2008 a las 21:17:02. Razón: corregir link
Responder Con Cita
 



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
procesadores de tres nucleos de AMD gmontes Noticias 10 18-01-2008 06:00:05
Unir trabajos de impresión mlara Impresión 2 31-05-2005 23:44:18
Iconos distintos en distintos escritorios. abel Linux 2 16-02-2004 14:55:35
Interbase con 2 procesadores jzginez Firebird e Interbase 2 08-10-2003 20:45:44


La franja horaria es GMT +2. Ahora son las 20:30:22.


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