Micro Systèmes n°103 décembre 1989
Micro Systèmes n°103 décembre 1989
  • Prix facial : 30 F

  • Parution : n°103 de décembre 1989

  • Périodicité : mensuel

  • Editeur : Société Parisienne d'Edition

  • Format : (203 x 271) mm

  • Nombre de pages : 222

  • Taille du fichier PDF : 182 Mo

  • Dans ce numéro : la recherche française en informatique.

  • Prix de vente (PDF) : gratuit

Dans ce numéro...
< Pages précédentes
Pages : 202 - 203  |  Aller à la page   OK
Pages suivantes >
202 203
TECHNIQUE Arrêt d'une thread Dans cet exemple simple, le programme n'a pas de fin. Les quelques lignes suivantes permettent d'arrêter la tâche fille de manière surprenante. *define INCL_DOSPROCESS *define INCL_DOSMEMMGR *inC.ude ledefine STACKSIZE 8000 static SEL selStack ; static char "pmstack ; void cdecl Tic_tac(void) void cdecl Horloge(void) int i ; i=10 ; DosAllocSeg (STACKSIZE, (PSEL)&selStack, 1) ; pmstack.(char far *) ((long)selStack « 16) ; _beginthread((void far ")Tic_tac,(void far") pmstack,STACKSIZE,OL) ; for () 1 DosSleep(9500) ; DosBeep(500,5001 ; //Toc iif (i<0) break ; DosFreeSeg (selStack) ; void cdecl Tic_tac(void) void cdecl Horloge(void) [int i ; t=10 ; DosAllocSeg (STACKSIZE, (PSEL)&selStack, 1) ; pmstack.(char far ") ((long)selStack « 15) ; _beginthread((void far *)Tic_tac,(void far*)pmstack, STACKSIZE,OL) ; for () 1 DosSleep(9500) ; DosBeep(500,500) ; //Toc iif (i<0) break ; DosSemWait (hsemKillThread,-1L) ; DosSleep(1000) ; DosFreeSeg (selStack) ; void cdecl Tic_tac(void) int i ; i=1000 ; DosSemSet (hsemKillThread) ; for () DosSleep(900) ; DosBeep(800,100) ; //Beep iif (i linclude *define STACKSIZE 8000 static SEL selStack ; static char "pmstack ; static ULONG KillThreadSem static HSEM hsemKillThread 202 - MICRO-SYSTEMES 0 ; //Semaphore to signal that &KillThreadSem ; //second//thread has ended. Ces deux appels permettent d'établir l'environnement de travail (avec Winlnitialize) et la file d'attente (avec WinCreateMsgQueue) de PM. Pour envoyer un message, deux appels sont disponibles : WinPostQueueMsg et Win- SendQueueMsg. Enfin, WinPeekMsg permet de les lire. Pour communiquer, les deux tâches vont s'envoyer des messages. A chaque message correspondra soit une demande de traitement, soit la signalisation de la fin d'un traitement avec l'écriture du résultat. On aura le schéma suivant : Décembre 1989
SYSTEMES Tâche 1 Tâche 2 Maitre Serveur MSG Request Réception de la requête Traitement MSG Confirmation Stockage de la réponse La tâche maitre La tâche maître va procéder au lancement de la tâche serveur et attendre que celle-ci soit opérationnelle. Une fois l'ensemble dans un état stable, la tâche maître va faire des demandes de requête à la tâche serveur. Cette demande se fait en deux temps. Premier temps : la tâche maître donne les indications nécessaires à la tâche serveur pour que celle-ci puisse lui renvoyer les réponses. Deuxième temps : la tâche maître envoie un message à la tâche serveur. Dans ce message on trouvera le code de la requête demandée et les paramètres l'accompagnant. La figure suivante en pseudo-C résume l'ensemble de ces opérations : Start Thread() ; Waitjhread_CompletionM Connect_Thread() : Thread_Request() ; Pait_Request() : Disconnect -Thread() ; Stop_Thread() La tâche serveur La tâche serveur est beaucoup plus simple dans son organisation. Elle est soit en mode attente, soit en mode traitement. On aura le mode de fonctionnement suivant : Wait_For_Request() ; Process_Request() ; Reply_Process() ; Les messages Un certain nombre de messages vont être nécessaires au dialogue entre les deux tâches. Ces messages sont regroupés en deux ensembles, à savoir les messages envoyés de la tâche maître vers la tâche serveur et les messages de la tâche serveur vers la tâche maître. Messages maître serveur CONNECT : ce message permet au maître de prévenir quelle est la procédure faisant appel aux prochains services. La tâche maître clôt la requête en envoyant un message DISCONNECT. DISCONNECT : ce message prévient la tâche serveur que la demande de service est finie. KILLTHREAD : ce message arrête la tâche serveur. REQUEST : un certain nombre de messages va être associé à chaque requête. Décembre 1989 Messages serveur maître COMPLETED : ce message permet au maître de savoir que la requête a été exécutée correctement. NOT_COMPLETED : ce message permet au maître de savoir que la requête a été exécutée avec des erreurs. THREAD_IS_STARTED : ce message permet au maître de savoir que la thread est opérationnelle et prête à recevoir des requêtes. Implantation dans l'application La tâche maître dans l'application va se présenter sous la forme d'un groupe de fonctions, d'une DialogBox procedure et d'une window procedure. On aura : CreateThread : cette fonction appelée au début de l'application va permettre de lancer la tâche serveur. La tâche serveur va lui répondre par le message THREAD_IS_STARTED. KillThread : cette fonction est lancée à la fin de l'application pour fermer la tâche serveur. PMPostThread : cette fonction permet de poster un message et ses paramètres associés à la tâche serveur. FnwpD1gBusy : cette DialogBox procedure reste affichée sur l'écran jusqu'à ce que la tâche secondaire réponde. Cette DialogBox est lancée à partir d'une autre DialogBox ou d'une fenêtre. La fonction Call_Request en est un exemple. FnwpClient : cette window procedure permet de lancer la fonction Call_Request. Call_Request : cette fonction est un exemple de lancement d'une demande de requête à la tâche serveur. Au préalable le programme a rempli un groupe de variables contenant la requête à exécuter. La fonction prototype La taille des sources va en augmentant. Le nombre de fonctions appelées dans le programme croît lui aussi. Le lecteur peut perdre pied dans la lecture de l'article. Pour remédier à cela nous allons « lire » le programme et expliquer ce qui arrive à chaque étape. Pour cela, nous allons nous fonder sur le squelette de l'application TPV listé dans cet article. Une fois le code source compilé, « linkédité » et traité par le « Resource Compiler », nous avons un module « SAMPLE.EXE » pouvant fonctionner sous Presentation Manager. Lançons ce programme. Nous exécutons la fonction « main ». Dans celle-ci, nous faisons appel à « WinBegin ». WinBegin va faire deux choses : générer l'environnement Presentation Manager et créer la tâche serveur. L'ordre de création dans la fonction WinBegin est important. En effet, il faut que la window procedure soit initialisée avant que la thread serveur ne lui envoie le message « THREAD IS_STARTED » La partie Presentation Manager de WinBegin va initialiser l'environnement PM avec Winlnitialize. Une file d'attente hmq va être créée avec WinCreateMsgQueue. Cette file va permettre de transférer des messages dans les procédures impliquées. WinRegisterClass va permettre d'inscrire une classe d'objet « szMainWnd » dans PM, mais aussi de lui associer la « window procedure ». Cette procédure sera en fait une tâche de l'application. L'appel WinCreatesStdwindow va créer une fenêtre de la classe szMainWnd ayant pour handle hwnd_frame. Après cela, la tâche serveur est lancée. Faisons le bilan dés tâches potentiellement actives à la MICRO-SYSTEMES - 203



Autres parutions de ce magazine  voir tous les numéros


Liens vers cette page
Couverture seule :


Couverture avec texte parution au-dessus :


Couverture avec texte parution en dessous :


Micro Systèmes numéro 103 décembre 1989 Page 1Micro Systèmes numéro 103 décembre 1989 Page 2-3Micro Systèmes numéro 103 décembre 1989 Page 4-5Micro Systèmes numéro 103 décembre 1989 Page 6-7Micro Systèmes numéro 103 décembre 1989 Page 8-9Micro Systèmes numéro 103 décembre 1989 Page 10-11Micro Systèmes numéro 103 décembre 1989 Page 12-13Micro Systèmes numéro 103 décembre 1989 Page 14-15Micro Systèmes numéro 103 décembre 1989 Page 16-17Micro Systèmes numéro 103 décembre 1989 Page 18-19Micro Systèmes numéro 103 décembre 1989 Page 20-21Micro Systèmes numéro 103 décembre 1989 Page 22-23Micro Systèmes numéro 103 décembre 1989 Page 24-25Micro Systèmes numéro 103 décembre 1989 Page 26-27Micro Systèmes numéro 103 décembre 1989 Page 28-29Micro Systèmes numéro 103 décembre 1989 Page 30-31Micro Systèmes numéro 103 décembre 1989 Page 32-33Micro Systèmes numéro 103 décembre 1989 Page 34-35Micro Systèmes numéro 103 décembre 1989 Page 36-37Micro Systèmes numéro 103 décembre 1989 Page 38-39Micro Systèmes numéro 103 décembre 1989 Page 40-41Micro Systèmes numéro 103 décembre 1989 Page 42-43Micro Systèmes numéro 103 décembre 1989 Page 44-45Micro Systèmes numéro 103 décembre 1989 Page 46-47Micro Systèmes numéro 103 décembre 1989 Page 48-49Micro Systèmes numéro 103 décembre 1989 Page 50-51Micro Systèmes numéro 103 décembre 1989 Page 52-53Micro Systèmes numéro 103 décembre 1989 Page 54-55Micro Systèmes numéro 103 décembre 1989 Page 56-57Micro Systèmes numéro 103 décembre 1989 Page 58-59Micro Systèmes numéro 103 décembre 1989 Page 60-61Micro Systèmes numéro 103 décembre 1989 Page 62-63Micro Systèmes numéro 103 décembre 1989 Page 64-65Micro Systèmes numéro 103 décembre 1989 Page 66-67Micro Systèmes numéro 103 décembre 1989 Page 68-69Micro Systèmes numéro 103 décembre 1989 Page 70-71Micro Systèmes numéro 103 décembre 1989 Page 72-73Micro Systèmes numéro 103 décembre 1989 Page 74-75Micro Systèmes numéro 103 décembre 1989 Page 76-77Micro Systèmes numéro 103 décembre 1989 Page 78-79Micro Systèmes numéro 103 décembre 1989 Page 80-81Micro Systèmes numéro 103 décembre 1989 Page 82-83Micro Systèmes numéro 103 décembre 1989 Page 84-85Micro Systèmes numéro 103 décembre 1989 Page 86-87Micro Systèmes numéro 103 décembre 1989 Page 88-89Micro Systèmes numéro 103 décembre 1989 Page 90-91Micro Systèmes numéro 103 décembre 1989 Page 92-93Micro Systèmes numéro 103 décembre 1989 Page 94-95Micro Systèmes numéro 103 décembre 1989 Page 96-97Micro Systèmes numéro 103 décembre 1989 Page 98-99Micro Systèmes numéro 103 décembre 1989 Page 100-101Micro Systèmes numéro 103 décembre 1989 Page 102-103Micro Systèmes numéro 103 décembre 1989 Page 104-105Micro Systèmes numéro 103 décembre 1989 Page 106-107Micro Systèmes numéro 103 décembre 1989 Page 108-109Micro Systèmes numéro 103 décembre 1989 Page 110-111Micro Systèmes numéro 103 décembre 1989 Page 112-113Micro Systèmes numéro 103 décembre 1989 Page 114-115Micro Systèmes numéro 103 décembre 1989 Page 116-117Micro Systèmes numéro 103 décembre 1989 Page 118-119Micro Systèmes numéro 103 décembre 1989 Page 120-121Micro Systèmes numéro 103 décembre 1989 Page 122-123Micro Systèmes numéro 103 décembre 1989 Page 124-125Micro Systèmes numéro 103 décembre 1989 Page 126-127Micro Systèmes numéro 103 décembre 1989 Page 128-129Micro Systèmes numéro 103 décembre 1989 Page 130-131Micro Systèmes numéro 103 décembre 1989 Page 132-133Micro Systèmes numéro 103 décembre 1989 Page 134-135Micro Systèmes numéro 103 décembre 1989 Page 136-137Micro Systèmes numéro 103 décembre 1989 Page 138-139Micro Systèmes numéro 103 décembre 1989 Page 140-141Micro Systèmes numéro 103 décembre 1989 Page 142-143Micro Systèmes numéro 103 décembre 1989 Page 144-145Micro Systèmes numéro 103 décembre 1989 Page 146-147Micro Systèmes numéro 103 décembre 1989 Page 148-149Micro Systèmes numéro 103 décembre 1989 Page 150-151Micro Systèmes numéro 103 décembre 1989 Page 152-153Micro Systèmes numéro 103 décembre 1989 Page 154-155Micro Systèmes numéro 103 décembre 1989 Page 156-157Micro Systèmes numéro 103 décembre 1989 Page 158-159Micro Systèmes numéro 103 décembre 1989 Page 160-161Micro Systèmes numéro 103 décembre 1989 Page 162-163Micro Systèmes numéro 103 décembre 1989 Page 164-165Micro Systèmes numéro 103 décembre 1989 Page 166-167Micro Systèmes numéro 103 décembre 1989 Page 168-169Micro Systèmes numéro 103 décembre 1989 Page 170-171Micro Systèmes numéro 103 décembre 1989 Page 172-173Micro Systèmes numéro 103 décembre 1989 Page 174-175Micro Systèmes numéro 103 décembre 1989 Page 176-177Micro Systèmes numéro 103 décembre 1989 Page 178-179Micro Systèmes numéro 103 décembre 1989 Page 180-181Micro Systèmes numéro 103 décembre 1989 Page 182-183Micro Systèmes numéro 103 décembre 1989 Page 184-185Micro Systèmes numéro 103 décembre 1989 Page 186-187Micro Systèmes numéro 103 décembre 1989 Page 188-189Micro Systèmes numéro 103 décembre 1989 Page 190-191Micro Systèmes numéro 103 décembre 1989 Page 192-193Micro Systèmes numéro 103 décembre 1989 Page 194-195Micro Systèmes numéro 103 décembre 1989 Page 196-197Micro Systèmes numéro 103 décembre 1989 Page 198-199Micro Systèmes numéro 103 décembre 1989 Page 200-201Micro Systèmes numéro 103 décembre 1989 Page 202-203Micro Systèmes numéro 103 décembre 1989 Page 204-205Micro Systèmes numéro 103 décembre 1989 Page 206-207Micro Systèmes numéro 103 décembre 1989 Page 208-209Micro Systèmes numéro 103 décembre 1989 Page 210-211Micro Systèmes numéro 103 décembre 1989 Page 212-213Micro Systèmes numéro 103 décembre 1989 Page 214-215Micro Systèmes numéro 103 décembre 1989 Page 216-217Micro Systèmes numéro 103 décembre 1989 Page 218-219Micro Systèmes numéro 103 décembre 1989 Page 220-221Micro Systèmes numéro 103 décembre 1989 Page 222