SDL2: SDL_GetMouseState () parçacığı güvenli mi?

oy
34

SDL_GetMouseStatefonksiyon parçacığı güvenli?

Ve örneğinde SDL_GetMouseState, SDL_PumpEventsiplik güvenli olduğu bilinen, kullanılır. Eğer SDL_GetMouseStateevreli, ben kullanmak zorunda mısın SDL_PumpEventsdüzgün çalıştığından yapmak için iş parçacığı güvensiz onunla olan?

Oluştur 25/01/2016 saat 20:20
kullanıcı
Diğer dillerde...                            


1 cevaplar

oy
1

Bu fonksiyonun kodudur:

Uint32
SDL_GetMouseState(int *x, int *y)
{
    SDL_Mouse *mouse = SDL_GetMouse();

    if (x) {
        *x = mouse->x;
    }
    if (y) {
        *y = mouse->y;
    }
    return mouse->buttonstate;
}

Ve SDL_GetMousesadece statik genel değişkenin adresini döndürür. Dolayısıyla, onunla güvensiz bir şey yok, ama hiçbir bölünmezlik yoktur.

Ancak olaylar ayrı ayrı işlenir. Eğer olayları prcess yoksa, fare yapısı güncelleme olmaz ve SDL_GetMouseStatesize eskimiş değerleri verecektir. Belgeler açıkça çağrı gerektiğini bildiren SDL_PumpEventssadece grafik parçacığı (grafik sistemi başlatıldı biri).

En kötü durum senaryosu size gelen vales okuyor SDL_GetMouseStatediğer iplik onu günceller iken. Eski değer, yeni bir değer veya (yeni ama eski den y den mesela x) iki hatta bir karışımını okuyabilir.

Cevap 26/01/2016 saat 02:18
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more