草庐IT

pthread_cond_t

全部标签

C++ 11 替代 pthread_cond_timedwait

我需要让一个线程等待直到任一个超时已过,或者一个变量被另一个线程改变经过一些研究,我发现pthreads有pthread_cond_timedwait,如果我要使用pthreads,这在这种情况下可能很有用。我改用C++11线程。在不完全传递给pthreads的情况下,是否有适合我的替代方案? 最佳答案 是的,你想要std::condition_variable来自,它有一个成员函数wait_for这需要一段时间。Thecondition_variableclassisasynchronizationprimitivethatcan

c++ - POSIX C 线程。 pthread_cond_t 示例。没有按预期工作

我写了一个程序,但它没有像我预期的那样工作。我有两个线程:thread触发func和anotherThread触发anotherFunc。我想做的是当cont在func中达到值10时,使用触发anotherThreadpthread_cond_wait和pthread_cond_signal。奇怪的是,如果我取消注释sleep(1)行,一切正常。我是线程的新手,我正在学习教程here如果我在他们的示例中评论sleep行,它也会中断。我的问题是如何在没有任何sleep()调用的情况下完成这项工作?如果在我的代码中func在anotherFunc之后到达pthread_mutex_lock

c++ - OS X clang -pthread

在OSX中使用带有clang的pthread库的编译器/链接器要求是什么。对于GCC,我知道使用-pthread设置适当的编译器/链接器选项,但我不确定OSX是否带有clang。air:~jose$clang++-ctest.cpp-pthreadair:~jose$clang++-otest-pthreadtest.oclang:warning:argumentunusedduringcompilation:'-pthread'air:~jose$g++-ctest.cpp-pthreadair:~jose$g++-otest-pthreadtest.o

c++ - CMake 链接错误 pthread:启用多线程以使用 std::thread:不允许操作

我有一个类似的错误C++Threads,std::system_error-operationnotpermitted?我正在使用完全相同的源代码并使用进行编译g++../src/main.cpp-pthread-std=c++11工作没有任何问题。因为我想在一个更大的项目中使用线程,所以我必须在CMake中使用线程。搜索解决方案后,我发现了几个代码,例如:cmake_minimum_required(VERSION2.6)project(Test)add_definitions("-std=c++11")find_package(Threads)add_executable(main

c++ - 何时使用 pthread_mutex_t

有人可以解释一下在什么情况下使用std::mutex与pthread_mutex_t比较有益。我不明白为什么我们会使用pthread_mutex_t。谢谢 最佳答案 pthread_mutex_t是一种POSIX解决方案(可用于linux和其他UNIX系统),在c++11将同步原语引入c++库之前就已经存在。您现在应该使用std::mutex,除此之外,它更跨平台(也可以在Windows下使用)。 关于c++-何时使用pthread_mutex_t,我们在StackOverflow上找到

c++ - 给定表达式 : `cond ? *this : throw()` 返回对类型的引用时出错

这似乎是一个错误,但我只是想确认一下。下面的格式是否正确?如果不是,为什么不呢?#includestructX{intvalue;constexprX(intvalue):value(value){}constexprX&do_something(intx){returnx在使用默认解决方案开关的VC++2015R3下,我得到:warningC4172:returningaddressoflocalvariableortemporaryg++(GCC)5.4.0带有开关-Wall-pedantic我得到:error:invalidinitializationofnon-constref

c++ - undefined reference `pthread_create' 使用 ASIO 和 std::thread 制作 C++11 应用程序时出错

我设置了Eclipse(实际上是XilinxSDK,但基于Eclipse)和g++4.9.2来编译一个使用独立ASIO的项目,我在属性->C/C++中使用了-std=c++11Build->Settings->ToolSettings->Otherflags以便它可以使用所有C++11特性进行编译。我还在C/C++GeneralSymbols中设置了ASIO_HAS_STD_THREAD,ASIO_STANDALONE等等,我希望ASIO头文件会使用std::thread而不是线程。但是,我仍然看到来自make的错误:undefinedreferencetopthread_create

c++ - C++ 成员函数中的 PTHREAD_MUTEX_INITIALIZER 无法编译?

classA{public:A();private:pthread_mutex_tmu;};A::A(){mu=PTHREAD_MUTEX_INITIALIZER;//cannotcompile}我不能在类成员函数中初始化pthread_mutex_t吗? 最佳答案 取而代之的是:A::A(){mu=PTHREAD_MUTEX_INITIALIZER;//cannotcompile}试试这个:A::A(){pthread_mutex_init(&(mu),NULL);}PTHREAD_MUTEX_INITIALIZER是一个宏,一个

c++ - 链接器错误 : undefined reference to symbol 'pthread_rwlock_trywrlock@@GLIBC_2.2.5'

我一直在使用CentOS、Qt4.7和GCC4.4进行开发我刚刚安装了包含GCC4.7.2的RedHatDeveloperToolset1.1,在make结束时,我收到一个错误/usr/bin/ld:../../bin/Solo:undefinedreferencetosymbol'pthread_rwlock_trywrlock@@GLIBC_2.2.5'/usr/bin/ld:note:'pthread_rwlock_trywrlock@@GLIBC_2.2.5'isdefinedinDSO/lib64/libpthread.so.0sotryaddingittothelinker

ios - 使用 "pthread_rwlock_wrlock failed cyclic metadata dependency detected"的调试器操作在模拟器中卡住和崩溃应用程序

在iOS模拟器(Xcode8.2.1、iOS10.2模拟器)中调试我的混合Objective-C/Swift3.0应用程序时,我无法在调试器中执行任何有用的操作。我输入的每个命令都会导致调试器卡住几秒钟,然后给我这条消息:objc[18146]:pthread_rwlock_wrlockfailed(11)GenericCache(0x1059cfca0):cyclicmetadatadependencydetected,abortingexpressionproducederror:error:Executionwasinterrupted,reason:signalSIGABRT.