_beginthread(timerThread, 0, NULL);是什么意思
时间: 2023-08-22 11:09:01 浏览: 127
`_beginthread` 是一个 Windows 下的线程创建函数,其原型为:
```c++
uintptr_t _beginthread(void(*start_address)(void*), unsigned stack_size, void* arglist);
```
其中,`start_address` 参数是一个指向线程函数的指针,`stack_size` 参数是线程堆栈的大小(单位为字节),`arglist` 参数是线程函数的参数。这个函数会创建一个新的线程,并在新的线程中执行 `start_address` 指向的函数。
在上面的代码中,`_beginthread(timerThread, 0, NULL)` 的意思是创建一个新的线程,该线程的线程函数为 `timerThread`,线程堆栈大小为 0,线程函数不需要参数,因此 `arglist` 参数传入了 NULL。这样就会在程序中创建一个新的线程,并在该线程中执行 `timerThread` 函数。
相关问题
void Game::game() { _beginthread(Game::key_thread, 0, NULL); _beginthread(Game::timer_thread, 0, NULL); Sleep(10000000000000000000); }显示void(Game::*)(void*arg)类型的实参与_beginthread_proc_type类型的形参不兼容怎么修改
这个错误提示是因为 _beginthread 函数需要的参数类型是 _beginthread_proc_type,而 Game::key_thread 和 Game::timer_thread 是成员函数,需要通过指向成员函数的指针来调用。可以将成员函数改为静态成员函数来解决这个问题。以下是修改方案:
```
static void Game::key_thread(void* arg);
static void Game::timer_thread(void* arg);
void Game::timer_thread(void* arg) {
bool flag1 = false;
while (seconds >= 0)
{
int gewei, shiwei;
gewei = seconds % 10;
shiwei = seconds / 10;
putimage(1012, 600, &number[shiwei]);
putimage(1062, 600, &number[gewei]);
Sleep(1000);
seconds--;
if (flag == true)
{
flag1 = true;
break;//说明时间内走到了终点
}
if (shengmingzhi == 0)
{
break;
}
}
if (seconds < 0)
{
flag = false;
biaoji.time = true;
}
if (flag1 == false) endgame();
}
void Game::game() {
_beginthread(Game::key_thread, 0, NULL);
_beginthread(Game::timer_thread, 0, NULL);
Sleep(10000000000000000000);
}
```
将成员函数改为静态成员函数即可。
void Game::game() { _beginthread(key_thread, 0, NULL); _beginthread(timer_thread, 0, NULL); Sleep(10000000000000000000); }Game::key_thread”: 非标准语法;请使用 "&" 来创建指向成员的指针请问这个错误怎么更改
这个错误可以通过将函数名前加上取地址符号&,来创建指向成员的指针,例如:
```
void Game::game() {
_beginthread(&Game::key_thread, this, NULL);
_beginthread(&Game::timer_thread, this, NULL);
Sleep(10000000000000000000);
}
```
这里的`this`指针是指向当前对象的指针,用来访问类的成员函数。
阅读全文