当我自己测试时,我在项目中发现了一个奇怪的错误,只是看看:
#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
也就是说,&#34;互斥&#34;首先正确锁定,然后流程进入线程函数,并且&#34;互斥锁&#34;你的东西,线程被锁定。但请注意,我没有解锁&#34; mutex&#34;。然后我尝试再次锁定主线程,它的工作原理......为什么?我应该陷入僵局.-。 奇怪...
答案 0 :(得分:2)