【发布时间】:2019-06-05 16:35:00
【问题描述】:
我有一个如下所示的函数
我想从 pthread 创建的线程中调用 lambda 表达式。
void parallel(int start, int end, std::function<void(int)&&lambda, int noThreads>){
....
....
pthread_create(&threadid, NULL, startRoutine, args);//Want to call lambda(1) from the created thread
lambda(2);//Works fine from the main thread
....
....
}
我应该如何将我的 lambda 函数传递给线程的 startRoutine?并从 startRoutine? 调用 lambda(1)。
【问题讨论】:
-
一定要用
pthread吗?std::thread自然会使用 lambda。 -
为什么不使用 args?
-
如果
lambda实际上是一个 lambda 表达式并且如果它没有捕获你可以获得一个函数指针,但是一旦你把它放在一个std::function中就没有办法得到一个函数指针返回。