Я heving странного бага в моем проекте, когда я нарезанный, чтобы проверить это сам, и просто посмотреть:Можно ли заблокировать два бита SDL дважды?
#include <stdio.h>
#include <stdlib.h>
#include <NLF.h>
#include <SDL_mutex.h>
SDL_mutex *mutex;
void tt()
{
printf("func\n");
printf("tentando locar: %d\n", SDL_LockMutex(mutex));
printf("locado\n");
}
int main(int arg, char *argc[])
{
SDL_Thread *thread;
mutex = SDL_CreateMutex();
printf("locado : %d\n", SDL_LockMutex(mutex));
thread = SDL_CreateThread(tt, "TestThread", NULL);
printf("relocado : %d\n", SDL_LockMutex(mutex));
}
и вот результат:
locado : 0
func
relocado : 0
, то есть, то " mutex "сначала заперта правильно, затем поток попадает в функцию потока, а« мьютекс »- на вашу вещь, и поток блокируется. Но обратите внимание, что я не разблокирую «мьютекс». то я пытаюсь запереть в основной поток, и это работает ... почему? Я должен зайти в тупик. ...
странно
Maan , что мое отсутствие. Спасибо –
И типичные нерекурсивные мьютексы не определяют поведение, если вы пытаетесь заблокировать их мьютекс рекурсивно. Они могут зайти в тупик. Вторая операция блокировки может быть no-op. Они могут потерпеть крах. –