56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
resolversem = SDL_CreateSemaphore(0);
resolvermutex = SDL_CreateMutex();
while (threads > 0) {
resolverthread &rt = resolverthreads.add();
rt.query = NULL;
rt.starttime = 0;
rt.thread = SDL_CreateThread(resolverloop, &rt);
--threads;
};
};
void
resolverstop(resolverthread &rt, bool restart)
{
SDL_LockMutex(resolvermutex);
SDL_KillThread(rt.thread);
rt.query = NULL;
rt.starttime = 0;
rt.thread = NULL;
if (restart)
rt.thread = SDL_CreateThread(resolverloop, &rt);
SDL_UnlockMutex(resolvermutex);
};
void
resolverclear()
{
SDL_LockMutex(resolvermutex);
resolverqueries.setsize(0);
resolverresults.setsize(0);
|
>
|
<
<
>
>
|
>
|
<
>
|
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
resolversem = SDL_CreateSemaphore(0);
resolvermutex = SDL_CreateMutex();
while (threads > 0) {
resolverthread &rt = resolverthreads.add();
rt.query = NULL;
rt.starttime = 0;
rt.thread =
SDL_CreateThread(resolverloop, "resolverthread", &rt);
--threads;
}
}
void
resolverstop(resolverthread &rt, bool restart)
{
SDL_LockMutex(resolvermutex);
// SDL_KillThread(rt.thread);
rt.query = NULL;
rt.starttime = 0;
rt.thread = NULL;
if (restart)
rt.thread =
SDL_CreateThread(resolverloop, "resolverthread", &rt);
SDL_UnlockMutex(resolvermutex);
}
void
resolverclear()
{
SDL_LockMutex(resolvermutex);
resolverqueries.setsize(0);
resolverresults.setsize(0);
|