草庐IT

pthread_mutex_trylock

全部标签

c++ - 无法在 pthread_create 函数中将 '*void(MyClass::*)(void*) 转换为 void*(*)(void*)

我正在尝试使用“CameraManager”类创建一个新线程,但出现以下错误:cannotconvert'*void(CameraManager::*)(void*)tovoid*(*)(void*)inpthread_createfunction我在cameramanager.h文件中定义:public:void*dequeueLoop(void*ptr);在cameramanager.cpp中voidCameraManager::startDequeuing(){dequeuing=true;dequeueThreadId=pthread_create(&dequeueThread

c++ - 如何在 C++ 中定义 vector <boost::mutex>?

我想用boost::mutex定义一个vector,例如:boost::mutexmyMutex;std::vectormutexVec;mutexVec.push_back(myMutex);但是,我在Linux上遇到错误:/boost_1_45_0v/include/boost/thread/pthread/mutex.hpp:33:错误:“boost::mutex::mutex(constboost::mutex&)”是私有(private)的/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/

c++ - pthread_create 段错误

我在我的程序中使用“pthread_create”方法,并在该方法中出现段错误。什么可能导致这个?我正在使用正确的参数类型调用此函数!这是代码:pthread_t*_daemon;void*writer(void*arg){//stuffthatdontinvolve"arg"...}intinitdevice(){if(pthread_create(_daemon,NULL,&writer,NULL)!=0)//seginthisline{cerr注意:在调用pthread_create中的writer之前,我也尝试在没有“&”的情况下运行它,而且-我们尝试向该方法发送一些void*

c++ - 一旦 std :thread makes into C++Ox,pthreads 会过时吗

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭5年前。Improvethisquestion显然我们仍会维护它,但一旦C++标准保证可用,它会有多大用处。随着新标准的出现,同步原语(Mutex、条件变量)会怎样?您是否认为pthread比std::thread更难掌握?

c++ - 如何用 "-pthread"而不是 "-mthread"编译 boost_thread?

我有一个操作系统,编译时没有可用的-mthread。我有-pthread。如何用-pthread而不是-mthread编译boost_thread?我当前的编译器构建日志:./b2-j1--with-threadlink=static--prefix=./install-dirreleasethreading=multi--builddir=./build-dirinstallComponentconfiguration:-chrono:notbuilding-context:notbuilding-date_time:notbuilding-exception:notbuilding

c++ - pthread_key_t 与局部变量

我正在使用Pthread在C++中开发一个多线程程序,我需要在每个线程中分配本地内存。谷歌搜索后,我发现pthread_key_t类型是某种映射,允许您在TLS中分配内存。所以我的问题是线程函数中的局部变量和pthread_key_t有什么区别?你能给出一个pthread_key_t的正确用法示例吗? 最佳答案 线程局部存储和局部变量之间的区别在于线程局部存储不需要是函数的局部变量。一旦声明它们的函数返回,常规局部变量可能不再被访问。使用pthread_getspecific和pthread_setspecific访问的线程特定存储

c++ - 如何分析 g++/std::mutex 下的锁争用?

问题是否有任何开源工具或是否有人有任何技术/代码来分析std::mutex争用的程度运行代码?我想在每个std::mutex实例的粒度(按时间或数量)计算锁争用的百分比。如果有一个不需要重新编码的嵌入式工具,那就更好了。我正在寻找一种适用于std::thread和g++的技术:在应用程序退出时,我想将互斥锁争用统计信息转储到日志文件中,这样我就可以在实际运行的上下文中监控线程代码的质量。注意我看过thisthread.不幸的是,答案要么需要大量现金,要么在Windows上运行。 最佳答案 我推荐像AMDCodeXL这样的东西或Int

c++ - 在共享模式下锁定的 std::shared_mutex 上调用解锁

C++17引入了std::shared_mutex类型。我一直在查看CppReference上的文档对产生未定义行为的情况特别感兴趣。在通读两种解锁方法(一种用于释放独占所有权,一种用于释放共享所有权)时,我注意到文档有一次有点含糊。对于std::shared_mutex::unlock_shared,文档说明(强调我的):Themutexmustbelockedbythecurrentthreadofexecutioninsharedmode,otherwise,thebehaviorisundefined.它清楚地表明调用unlock_shared必须先调用lock_shared因

c++ - 我可以在已经由 main 创建的 pthread 中创建一个 pthread 吗?

如果我在主函数创建的pthread中创建pthread_create会出错吗?如果,我可以,那我该管什么???重要......:我正在做一个套接字编程,我在不同的端口上打开了5个线程,每个线程都在监听端口,每当我收到一条消息时,我想创建一个线程来接收消息和使用pwrite写入文件。那么,我有几个问题,你能帮我吗???如果不是,那么在线程内创建线程的另一种解决方案是什么??或者它会给我一个段错误吗???或者我会遇到一些竞争条件.... 最佳答案 pthread_create创建一个新线程。独立于它在哪里叫。并在监听时为连接创建一个新线

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

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