gpt4 book ai didi

c++ - 为什么一个函数接受一个空指针?

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:06:30 24 4
gpt4 key购买 nike

我正在尝试理解 pthread。

但是需要创建线程方法如下:

void *SomeMethod(void* x)
{
//Do Something
}

为什么需要创建一个接受void 指针的函数?我们不能将 pthread 与这样的函数一起使用吗?

void SomeMethod()
{
}

最佳答案

因为 pthread_create 函数采用 void* (*)(void*) 类型的参数,这是一个采用 void* 的函数并返回一个 void*,因此要使用 pthread_create 创建一个线程,这就是您需要使用的。

pthread_create API 允许您将数据传递到新线程并再次取回数据。如果您不想传递任何内容,您仍然必须满足该接口(interface),但只需将其传递为 NULL。

仅仅因为现在不想将任何参数传递给您的新线程并不意味着 API 应该设计为仅支持您当前的用例。有一个根据接受 void*(可以选择传递 NULL)的函数编写的 API 比有一个没有参数并要求用户提出的函数的 API 要好得多使用他们自己的解决方案将数据传递到新线程。

在 C++ 中,您可以为新线程使用任何类型的函数,并向其传递您需要的任何参数:

std::thread t(&SomeMethod);

关于c++ - 为什么一个函数接受一个空指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32487579/

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