Markus Pitha: Globale Variablen in C

Beitrag lesen

Morgen,

Da sich die Sprites aber bewegen - und zwar alle! - muß ein ständiges Update der Positionen in der Matrix vorgenommen werden. Damit ein wenig Ordnung reinkommt empfiehlt es sich, das immer nur einer schreibt, während der ganze Rest lesen darf. Es ist also eine Sperre nötig. So eine Sperre kann man z.B. mit einem Mutex (MUTual EXclusion) realisieren.

int x;

/* Mutex bezeichnen und gleich initialisieren */
pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER;

/*Mutex sperren*/
pthread_mutex_lock(&mut);

/* globale Variable um eins erhöhen */
x++;

/*Mutex wieder entsperren*/
pthread_mutex_unlock(&mut);
[/code]

Ja, ich mache es bereits so, da ohnehin nicht von 2 Threads gleichzeitig auf den Grafikspeicher geschrieben werden kann. (Die Grafiken verhalten sich sonst ganz seltsam und sind nur sehr langsam)

Das kann jedoch zu Problemen führen. Unter anderem zu solchen, die "Deadlock" genannt werden.

Ja, ich habe schon bereits darüber gelesen.

Markus.

--
sh:( fo:| ch:? rl:( br:> n4:( ie:{ mo:) va:) de:] zu:) fl:( ss:| ls:] js:|