【发布时间】:2011-12-11 19:58:34
【问题描述】:
我在 C 中使用 Threads for windows 进行游戏,但在游戏的某个时刻,我需要在特定时刻停止一些线程,我不知道我需要停止线程的函数和参数,也不知道什么它返回。
这两个函数是相同的,一个简单的计时器,一直运行到计数器达到限制,我想随时停止第二个线程,而不使用 WaitForSingleObject(hThread, Miliseconds) 的第二个参数。
DWORD WINAPI timer(LPVOID segundo)
{
int counter = 0;
while(counter<segundo)
{
counter++;
gotoxy(30,5);
printf("%d", counter);
Sleep(1000);
}
return NULL;
}
DWORD WINAPI prueba(LPVOID segundo)
{
int counter = 0;
while(counter<segundo)
{
counter++;
gotoxy(30,10);
printf("%d", counter);
Sleep(1000);
}
return NULL;
}
int main()
{
int limit = 5, *ptr;
*ptr = limit;
HANDLE hThread1, hThread2;
DWORD time, probo;
hThread1 = CreateThread(NULL, 0, timer, *ptr, 0, &time);
hThread2 = CreateThread(NULL, 0, prueba, *ptr, 0, &probo);
WaitForSingleObject(hThread2, INFINITE);
WaitForSingleObject(hThread1,INFINITE);
return 0;
}
【问题讨论】:
-
请问您为什么要这样做?线程协同工作。你发信号给一个线程做某事,然后等到它完成。在这里,您将向线程发出您希望它暂停的信号,然后等待它暂停。听起来这不是您的想法,这可能是设计缺陷的征兆。
标签: c multithreading process timer terminate