C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – pthread_create函数中的第四个参数大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
像这样的代码

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

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

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

解决方法

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

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

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

大佬总结

以上是大佬教程为你收集整理的c – pthread_create函数中的第四个参数全部内容,希望文章能够帮你解决c – pthread_create函数中的第四个参数所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。