c语言函数的四个参数,C语言 pthread_create函数中的第四个参数

像这样的代码:

int code = pthread_create(&d->thread_id, &attr, QThreadPrivate::start, this);

哪个QThreadPrivate :: start是一个静态函数.

那么,第四个参数有什么用呢?如果将其替换为NULL,有什么区别?

这是一个常见的习语.您想要启动一个线程,但您希望该线程对特定对象进行操作.因此,您需要将指针传递给您希望其操作的对象.如果您在该对象的成员函数内,则this指针指向您正在操作的对象.您不能直接将指针传递给成员函数(因为类型会有所不同),因此您使用静态成员函数,其唯一目的是将this指针强制转换回正确的类型并运行非静态成员函数.

如果将此更改为NULL,则线程将不知道它应该在哪个对象上操作.可能,QThreadPrivate :: start会出错或失败,因为如果没有指向该实例的指针,它将无法在实例上调用非静态成员函数.

假设您有一个具有普通成员函数的类,该函数不带参数并且不返回任何参数.您有一些代码不知道您的类或其任何结构.您希望为该代码提供足够的信息来在特定的类实例上调用该成员函数.你通过什么?你不能传递一个指向成员函数的指针,因为不知道你的类,它不能调用普通的类成员函数.答案:您向它传递一个指向静态成员函数的指针,该函数的实现调用普通成员函数,并向它传递一个指向您希望它调用其方法的实例的指针.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值