gpt4 book ai didi

c++ - mem_fun 失败,pthread 和类 ptr

转载 作者:行者123 更新时间:2023-11-28 04:01:07 24 4
gpt4 key购买 nike

pthread 接受它的参数 void *(*start_routine)(void* userPtr),我希望我可以使用 std::mem_fun 来解决我的问题,但我做不到。

我想使用函数 void * threadFunc() 并让 userPtr 充当类 (userPtr->threadFunc())。是否有类似于 std::mem_func 的函数可供我使用?

最佳答案

一种方法是使用调用主线程函数的全局函数:

class MyThreadClass {
public:
void main(); // Your real thread function
};

void thread_starter(void *arg) {
reinterpret_cast<MyThreadClass*>(arg)->main();
}

然后,当你想启动线程时:

MyThreadClass *th = new MyThreadClass();
pthread_create(..., ..., &thread_starter, (void*)th);

另一方面,如果您真的不需要手动使用 pthreads,那么看看 Boost.Thread 可能是个好主意。 ,一个很好的 C++ 线程库。在那里,您可以获得线程、锁、互斥锁等的类,并且可以以更加面向对象的方式执行多线程。

关于c++ - mem_fun 失败,pthread 和类 ptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/456588/

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