请看一下这个简单的C++
计划:
#include <iostream>
#include <thread>
void thread_test()
{
std::cout << "Thread test\n";
}
int main(int argc, const char * argv[])
{
std::thread t(thread_test);
t.join();
return 0;
}
我正在尝试使用macOS Sierra上的Xcode编译它。它不编译。它说'thread' file not found
。
在构建设置中,我使用libstdc++ (GNU C++ standard library)
C++ Standard Library
选项。如果我将此设置切换为libc++ (LLVM C++ standard library with C++11 support)
,那么它就可以了,它会编译。但我的目标是使用libstdc++
而不是libc++
以某种方式编译它。它甚至可能吗?你能给我一点建议吗?
答案 0 :(得分:1)
Xcode附带的libstdc ++版本非常陈旧,并且不包含pthread_mutex_timedlock()
。 macOS上的pthreads缺少一些超时函数(例如std::thread
)。
您根本无法在macOS上同时使用boost::thread
和Xcode提供的libstdc ++。您必须切换到libc ++或使用不同的库Message::whereIn('conversation_id',$msgs)
->where('deleted', '!=', $userId)
->with(array('last_sender' =>function($query) use ($userId){
$query->where('id','!=', $userId);
$query->select('id', 'userName', 'profilePic','firstName', 'lastName');
}))
->with(array('last_reciever' =>function($query) use ($userId){
$query->where('id','!=', $userId);
$query->select('id', 'userName', 'profilePic','firstName', 'lastName');
}))
->orderBy('id', 'desc')
->orderBy('conversation_id', 'desc')
->groupBy('id')
->groupBy('conversation_id')
->get();
才能正常工作。 TinyThread++也是使用libstdc ++在macOS下工作的替代方法。