gpt4 book ai didi

c - 当我 pthread_kill(runTheGame,SIGQUIT); 时,为什么我的 Visual Studio 说 "SIGQUIT"is not Defined?

转载 作者:行者123 更新时间:2023-11-30 19:26:40 26 4
gpt4 key购买 nike

所以我是一个编程新手,我想写一个带有时间倒计时的2048游戏。当时间到了,定时器应该使用pthread_kill()来结束runTheGame(),这是玩游戏的函数。

我搜索了互联网,他们告诉我使用 pthread_kill(functionName, SIGQUIT)。你知道我的故事的其余部分:VS 不知道 SIGQUIT。

我知道 VS 不支持 pthread,所以我遵循了一些指南来使其工作。除了在路径中放入 .h 之外,我发现我必须确保源代码以 .c 而不是 .cpp 结尾,否则编译器会说 pthread_create() 的第三个参数存在一些错误。

此外,我在源代码的开头写了“#pragma comment(lib,"pthreadVC2.lib")”。如果我不这样做,就会出现其他问题。

完成所有这些准备工作后,我成功运行了一个程序,该程序计算 _getch() 捕获了多少个字符,同时在另一个线程中计算经过的秒数。

所有这些信息都是为​​了证明我已经(部分)正确地将pthread.h安装到VS中。我以为我的 pthread 会工作得很好,天知道为什么现在出了问题。

#pragma comment(lib,"pthreadVC2.lib")
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<pthread.h>
#include<string.h>
#include<time.h>
pthread_t runTheGame;
//***unneccessary code is hidden***
void timerTick()//function for doing countdown
{
for (;;)
{
restTime--;
if (restTime <= 0)
{
pthread_kill(runTheGame,SIGQUIT);//VS doesn't recognize the SIGQUIT
if (score >= goalOfLevel[arcadeLevel - 1])
{
//code is not written yet
}
}
_sleep(1000);
}
}
//***unneccessary code is hidden***
void gameRunning()//Real game loop. Run by pthread_create().
{
//***unneccessary code is hidden***
}
//***unneccessary code is hidden***
void game(int arcade)//function for initializing the game
{
arcadeLevel = arcade;
boardRange = 4;
oversize = 2048;
score = 0;
revive = 0;
doubleScoreOrNot = 1;
if (arcadeLevel > 0)
{
restTime = timeOfLevel[arcadeLevel - 1];
if (passivePower[0] == 1)
{
boardRange++;
}
if (passivePower[1] == 1)
{
revive = 1;
}
if (passivePower[3] == 1)
{
oversize = 1024;
}
if (passivePower[4] == 1)
{
score=goalOfLevel[arcadeLevel-1]/10;
}
if (passivePower[5] == 1)
{
restTime += restTime /20*3;
}
if (passivePower[7] == 1)
{
boardRange--;
doubleScoreOrNot = 2;
}
}
pthread_create(&runTheGame, NULL, gameRunning, NULL);//after all these initialization, real game starts here
}

感谢您的帮助。

最佳答案

发布的代码缺少以下语句:

#include <signal.h>

这是定义信号名称的地方

SIGQUIT 还会导致核心转储。可能不是你想要的。建议使用:SIGTERM

关于c - 当我 pthread_kill(runTheGame,SIGQUIT); 时,为什么我的 Visual Studio 说 "SIGQUIT"is not Defined?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56891723/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com