Outils pour utilisateurs

Outils du site


allegro:threads

====== Différences ====== Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

allegro:threads [2012/03/17 00:57]
mrhide [Détails]
allegro:threads [2012/06/29 17:02] (Version actuelle)
mrhide [Threads]
Ligne 1: Ligne 1:
-===== Threads =====+===== Allegro — Threads =====
  
 Dans cet article nous allons voir comment utiliser l'​interface de threading d'​Allegro. Dans cet article nous allons voir comment utiliser l'​interface de threading d'​Allegro.
- 
-FIXME faire le walktrough 
  
 ==== Exemple basique ==== ==== Exemple basique ====
Ligne 18: Ligne 16:
 { {
    ​ALLEGRO_MUTEX ​  ​*mutex;​    ​ALLEGRO_MUTEX ​  ​*mutex;​
-   ​ALLEGRO_COND ​   *cond; 
    ​ALLEGRO_DISPLAY *display;    ​ALLEGRO_DISPLAY *display;
    ​ALLEGRO_BITMAP ​ *caret;    ​ALLEGRO_BITMAP ​ *caret;
Ligne 26: Ligne 23:
 { {
    ​data->​mutex ​  = al_create_mutex();​    ​data->​mutex ​  = al_create_mutex();​
-   ​data->​cond ​   = al_create_cond();​ 
    ​data->​display = display;    ​data->​display = display;
    ​data->​caret ​  = caret;    ​data->​caret ​  = caret;
Ligne 34: Ligne 30:
 { {
    ​al_destroy_mutex(data->​mutex);​    ​al_destroy_mutex(data->​mutex);​
-   ​al_destroy_cond(data->​cond);​ 
 } }
  
Ligne 109: Ligne 104:
 } }
  
-static void *progressBar(ALLEGRO_THREAD *thr, void *arg) { +static void *progressBar(ALLEGRO_THREAD *thr, void *arg) 
 +{
    ​ALLEGRO_TIMER ​      ​*timer ​      = NULL;    ​ALLEGRO_TIMER ​      ​*timer ​      = NULL;
    ​ALLEGRO_EVENT_QUEUE *event_queue = NULL;    ​ALLEGRO_EVENT_QUEUE *event_queue = NULL;
Ligne 240: Ligne 235:
 </​code>​ </​code>​
  
-Pour terminer ce type de thread, un **join** ne suffit pas car il n'​enlève pas les **locks** ​dus aux conditions. Vous devez utiliser à la place :+La fonction restera bloquée sur **al_wait_cond** tant que le thread parent n'a pas appelé **al_broadcast_cond**. 
 + 
 +Pour terminer ce type de thread, un **join** ne suffit pas car il n'​enlève pas les **locks** ​dûs aux conditions. Vous devez utiliser à la place :
  
 <code C> <code C>
Ligne 248: Ligne 245:
     al_unlock_mutex(data.mutex);​     al_unlock_mutex(data.mutex);​
 </​code>​ </​code>​
 +
 +Maintenant que vous savez utiliser les threads, vous savez pratiquement tout ce qu'il y a à savoir sur le core d'​allegro,​ dans la suite de ce tutoriel nous aborderons les différents greffons d'​Allegro.
  
 [[allegro:​input|Précédent]] << [[allegro:​start#​articles|Sommaire]] >> [[allegro:​addons|Suivant]] [[allegro:​input|Précédent]] << [[allegro:​start#​articles|Sommaire]] >> [[allegro:​addons|Suivant]]
allegro/threads.1331942257.txt.gz · Dernière modification: 2012/03/17 00:57 par mrhide