草庐IT

pthread_exit

全部标签

c++ - 为什么在极少数情况下 pthread_exit() 在 pthread_detach() 之后调用时会导致 SEGV?

我在调用pthread_join()时遇到了一个C++无法轻易重现的SEGV(大约每100,000次测试运行中就会出现一次),因为我的应用程序正在关闭。我检查了errno的值,它是零。这是在Centosv4上运行的。在什么情况下pthread_join()会得到一个SEGV?这可能是某种竞争条件,因为它非常罕见。有人建议我不应该调用pthread_detach()和pthread_exit(),但我不清楚原因。我的第一个工作假设是pthread_join()被调用,而pthread_exit()仍在另一个线程中运行,这不知何故导致了SEGV,但是许多人表示这不是问题。在应用程序退出期间

c++ - 一个类中的pthread

大家好,考虑到下面的代码(用g++-lpthreadthread_test.cpp编译),我如何从“thread_function”中知道我在第几线程?如果您有任何其他建议,请告诉我。谢谢!thread_test.cpp:#include#include#include#includeclassA{public:A();voidrun();private:staticvoid*thread_function(void*ptr);pthread_tm_thread1,m_thread2;staticintm_global;};intA::m_global=0;A::A(){intret1

c++ - pthreads:触发其他线程的线程

您好,我是多线程编程的新手。我正在尝试创建一个代码来创建一个线程THREAD1,在它完成某些操作后,它会触发另外两个线程,比如THREAD2和THREAD3,然后退出。我写了两个可能的解决方案。1)条件变量的使用(不起作用:在某些情况下我遇到了死锁):pthread_mutex_tready_mutex=PTHREAD_MUTEX_INITIALIZER;pthread_cond_tready_cond=PTHREAD_COND_INITIALIZER;boolready=false;void*trigger(void*);void*func1(void*);void*func2(vo

c++ - 为什么 pthread_mutex_t 在尝试通过来自两个不同进程的共享内存进行锁定时会出现段错误?

我为打算在两个进程之间使用的pthread_mutex_t编写了一个super简单的包装器://basicversionjusttotestusingitbetweentwoprocessesstructMyLock{public:MyLock(){pthread_mutexattr_init(&attr);pthread_mutexattr_setpshared(&attr,PTHREAD_PROCESS_SHARED);pthread_mutexattr_settype(&attr,PTHREAD_MUTEX_ADAPTIVE_NP);pthread_mutex_init(&loc

c++ - pthread_create 没有参数?

我想创建一个没有函数参数的线程,但我一直收到严重困扰我的错误,因为我无法让一些super简单的东西正常工作这是我的代码:#include#include#include#include#includevoid*showart(NULL);intmain(intargc,char**argv){pthread_tthread1;pthread_create(&thread1,NULL,showart,NULL);getchar();return0;}void*showart(NULL){std::stringtext;std::ifstreamifs("ascii");while(!if

c++ - 如何让 cmake 使用 "-pthread"而不是 -lpthread”?

这是我的环境:操作系统:Ubuntu14.10海湾合作委员会:4.9cmake:2.8,3.1(都试过了)项目:muduo最近开始学习网络编程,下载muduo进行学习。虽然我在构建源代码时遇到问题,因为cmake会提示“找不到-lpthreads”。我做了一些研究。这主要是由于Ubuntu14.10下的gcc版本较新引起的。gcc-4.9将使用“-pthread”链接到pthread库,然而,旧版本的gcc使用“-lpthreads”。似乎cmake仍然使用“-lpthreads”,我不知道如何更正这个......错误日志如下:File/home/jack/workspace/gith

ios - Xcode 6 : linker command failed with exit code 1

我只是不小心删除了一个框架,但我不知道它是哪个框架,也不知道添加回去是否可以简单地解决问题。这是我收到的错误消息:ld:无法直接链接到/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.3.sdk/usr/lib/system/libdyld.dylib。而是链接到伞式框架“System.framework”。用于架构i386clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)任何帮助将不胜感激!我确信有一

c++ - 带 pthreads 的后台线程

我正在使用pthreads创建一个后台线程来加载并在后台执行一些任务,但它有时会滞后应用程序,因为它的工作量很大。有什么方法可以设置较低的优先级或不同的调度(或两者的组合),以便主线程有更多的CPU时间运行? 最佳答案 这并没有逐字回答你的问题,但是在ConcurrencyProgrammingGuideApple建议远离线程并使用“DispatchQueues”或例如,OSX和iOS上异步操作的“操作队列”dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORIT

iphone - clang : error: linker command failed with exit code 1 (use -v to see invocation)

我已经使用Xcode5版本6开发了一个iOS应用程序。我已在iOS模拟器和我的iPhone5(iOS7beta6)上成功运行该应用程序我正在按照Apple的教程学习如何将应用发布到应用商店(有点复杂)。我已经到了他们要我“存档”我的项目的地步。每次我尝试归档它时,它都会给我这个错误:ld:filenotfound:/Users/name/Library/Developer/Xcode/DerivedData/Mobile-cwvgezbobyhhzzccadgoqizqcmfd/Build/Intermediates/ArchiveIntermediates/trial/Install

ios - 难以理解 Obj-C MVC : exit and unwindSegue

创建了一个按钮,用于从第二个ViewController退出到前一个ViewController。我在教程中读到这应该通过在ViewController中使用“EXIT”来实现。(control+点击+拖动按钮退出)。我在第二个Controller上创建了一个“退出”按钮,并在ViewController类上创建了一个方法来连接control+click+dragexitsegue。这个方法完全是空的:-(IBAction)unwindToMainMenu:(UIStoryboardSegue*)unwindSegue{}然而,当我按下按钮时,它会按我的预期返回到之前的ViewCont