2010-06-21 8 views

Répondre

2

vous avez probablement besoin de Multi-threading. vous pouvez commencer avec le tutoriel dans about.com

+0

merci pour les liens ... c'est un bon démarrage .. –

3

Ceci est fait en utilisant des threads. C'est un sujet avancé, cependant, et vous pouvez d'abord apprendre les bases de la programmation avant de commencer avec les discussions.

+0

+1 pour "sujet avancé". L'OP pourrait même ne pas vouloir l'exécution parallèle, pourtant c'est ce qui semble être demandé. –

7

En supposant Delphi 2009 ou au-dessus et en utilisant OmniThreadLibrary:

uses OtlParallel; 

var 
    aRes: integer; 
    bRes: integer; 

begin 
    Parallel.Join(
    procedure begin 
     aRes := a(); 
    end, 
    procedure begin 
     bRes := b(); 
    end); 
end. 

Ou pour les puristes qui n'aiment pas les fonctions anonymes:

uses OtlParallel; 

var 
    aRes: integer; 
    bRes: integer; 

procedure CalcA; 
begin 
    aRes := a(); 
end; 

procedure CalcB; 
begin 
    bRes := b(); 
end; 

begin 
    Parallel.Join(CalcA, CalcB); 
end. 

(Il font du travail du même chose si CalcA et CalcB sont des méthodes, pas des procédures simples.)

Comme d'autres l'ont indiqué, le domaine du multithreadi La programmation est pleine de danger. Assurez-vous que vos deux fonctions ne modifient pas les mêmes structures, qu'elles ne transmettent pas les données à une même destination et, surtout, qu'elles n'utilisent aucune interface graphique.

+0

Vous ne voulez pas dire ** pas ** modifier les mêmes structures? – afrazier

+0

@afrazier: Bien sûr! Merci pour la correction. – gabr

Questions connexes