====== Différences ====== Ci-dessous, les différences entre deux révisions de la page.
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]] |