jjzjj

pThreads

全部标签

c++ 编译 std::thread 示例与 scons

我无法让scons正确编译一个小型线程示例(在Linux上)。如果我运行scons,它会这样做:jarrett@jarrett-laptop:~/projects/c++_threads$sconsscons:ReadingSConscriptfiles...scons:donereadingSConscriptfiles.scons:Buildingtargets...g++-obuild/main.o-c-std=c++11-pthread-Wall-gsrc/main.cppg++-obuild/c++threadsbuild/main.oscons:donebuildingta

c++ - 在 C++ 中使用线程报告计算进度

我正在编写一个通用抽象类,以便能够根据需要报告尽可能多的实例变量的状态。例如,考虑以下无用循环:inta,b;for(inti=0;i如果能够在不修改循环的情况下查看a和b的值,那就太好了。过去我写过如下if语句:inta,b;for(inti=0;i这将允许我每100次迭代查看a的值。然而,根据正在进行的计算,有时无法以这种方式检查进度。我们的想法是能够离开计算机,在给定时间后返回并检查您想要查看的任何值。为此我们可以使用pthreads。以下代码有效,我发布它的唯一原因是因为我不确定我是否正确使用线程,主要是如何关闭它。首先让我们考虑文件“reporter.h”:#include#

c++ - 我可以同时锁定多个变量吗?

我在问一个关于多线程的问题。假设我有两个全局vector,std::vectorvec1和std::vectorvec2.此外,我总共有4个线程可以访问vec1和vec2。我可以这样写代码吗?voidthread_func()//thisisthefunctionthatwillbeexecutedbyathread{MyClass1*myObj1=someFunction1();MyClass2*myObj2=someFunction2();//Iwanttopushbackvec1,thenpushbackvec2inanatomicwaypthread_mutex_lock(mu

c++ - 是否可以在没有 pthread 的情况下构建 protobuf?

在没有pthread的实时操作系统上需要使用ProtocolBuffers。我可以通过这种方式静态链接protobufg++-g-Wallexample.pb.ccexample.cc-oexample-static-lprotobuf-lpthread但是,如果没有pthread,我会收到链接错误。是否可以将protobuf配置为在没有pthread的情况下工作? 最佳答案 不是真的。参见thisUnresolved问题。有人修补了较旧的protobuf版本以使其不依赖于pthreads,请参阅here-如果你真的需要它,你可能会

C++ pthread阻塞队列死锁(我认为)

我在使用pthreads时遇到问题,我认为我遇到了死锁。我创建了一个我认为有效的阻塞队列,但在进行更多测试后,我发现如果我尝试取消阻塞在blocking_queue上的多个线程,我似乎会遇到死锁。阻塞队列很简单,看起来像这样:templateclassBlocking_Queue{public:Blocking_Queue(){pthread_mutex_init(&_lock,NULL);pthread_cond_init(&_cond,NULL);}~Blocking_Queue(){pthread_mutex_destroy(&_lock);pthread_cond_destro

C++ 11 线程,错误调用纯虚函数

这是我正在尝试编译的非常简单的C++11线程API代码#include#includeusingnamespacestd;voidthreadFunction(void){cout关于将其编译为g++thread1.cpp-pthread-std=c++11我收到以下错误纯虚方法调用在没有事件异常的情况下终止调用中止有什么问题吗,求大神帮忙请注意,我是在配备ARMA8处理器的BeagleboneBlack上编译的 最佳答案 这是libstdc++或Clang中的错误,具体取决于您询问的对象。如果您使用的是2013年10月之后发布的C

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++ - 如何在 Android NDK 中使用 c++0x 线程?

我正在尝试用android-ndk-r8b编译这个简单的程序:jni/hello_jni.cpp#include#includevoidhello(){std::coutjni/Application.mkAPP_OPTIM:=releaseAPP_MODULES:=hello_threadAPP_STL:=gnustl_staticjni/Android.mkLOCAL_PATH:=$(callmy-dir)include$(CLEAR_VARS)LOCAL_CPPFLAGS+=-std=c++0x-frttiLOCAL_MODULE:=hello_threadLOCAL_LDLIB

c++ - 完成后关闭线程

完成后如何关闭线程?比如确保没有任何东西打开或运行?到目前为止我知道如何打开它,但..不知道如何正确关闭它intiret1;pthread_tthread1;char*message1;void*multithreading1(void*ptr){while(1){//Ourfunctionhere}}intmain(intargc,char*constargv[]){if((iret1=pthread_create(&thread1,NULL,multithreading1,(void*)message1))){printf("Threadcreationfailed:%d\n",i