草庐IT

pthread_exit

全部标签

linux - pthread 可以自己执行清理吗?

假设我:mallocpthread_t用于保存线程上下文pthread_create将指向pthread_t结构的指针作为用户参数换句话说,线程函数可以访问其pthread_t上下文结构。现在这是棘手的一点:pthread如何自行退出并以某种方式释放pthread_t上下文?即是否有可能不涉及父线程?(没有互斥/加入等)将此视为“轻量级流程”。(并且线程不能在退出其thread_func之前free()结构。 最佳答案 您在创建线程时收到的pthread_t只是它的ID,用于从其他线程引用该线程。要在线程终止时自动释放线程上下文,您

c - 以错误的顺序调用内核模块 Init 和 Exit 函数

我正在制作一个非常简单的helloworld内核模块并出现一些疯狂的行为。这一直有效,直到我升级到内核3.3.8,现在它...嗯,它在退出时调用init函数,在初始化时调用exit函数。我已经确定我的名字是正确的//Neededformoduledefinitions#include//Neededforinitilizationmodules#include//MustdeclaresomelicenseMODULE_LICENSE("DualBSD/GPL");//Functiontobecalledoninsmod//Returns0onsuccessstaticint__ini

c - 以错误的顺序调用内核模块 Init 和 Exit 函数

我正在制作一个非常简单的helloworld内核模块并出现一些疯狂的行为。这一直有效,直到我升级到内核3.3.8,现在它...嗯,它在退出时调用init函数,在初始化时调用exit函数。我已经确定我的名字是正确的//Neededformoduledefinitions#include//Neededforinitilizationmodules#include//MustdeclaresomelicenseMODULE_LICENSE("DualBSD/GPL");//Functiontobecalledoninsmod//Returns0onsuccessstaticint__ini

c++ - 错误 : invalid conversion from ‘void*’ to ‘void* (*)(void*)’ - pthreads

anisha@linux-y3pi:~>g++conditionVarTEST.cpp-WallconditionVarTEST.cpp:Infunction‘intmain()’:conditionVarTEST.cpp:33:53:error:invalidconversionfrom‘void*’to‘void*(*)(void*)’conditionVarTEST.cpp:33:53:error:initializingargument3of‘intpthread_create(pthread_t*,constpthread_attr_t*,void*(*)(void*),vo

c++ - 错误 : invalid conversion from ‘void*’ to ‘void* (*)(void*)’ - pthreads

anisha@linux-y3pi:~>g++conditionVarTEST.cpp-WallconditionVarTEST.cpp:Infunction‘intmain()’:conditionVarTEST.cpp:33:53:error:invalidconversionfrom‘void*’to‘void*(*)(void*)’conditionVarTEST.cpp:33:53:error:initializingargument3of‘intpthread_create(pthread_t*,constpthread_attr_t*,void*(*)(void*),vo

c - pthread_cond_wait 2 个线程

我正在尝试为2个线程实现pthread_cond_wait。我的测试代码试图使用两个线程来执行以下场景:线程B等待条件线程A打印“Hello”五次线程A向线程B发出信号线程A等待线程B打印“再见”线程B向线程A发出信号循环开始(x5)到目前为止,代码打印了五次“Hello”,然后卡住了。从我看过的例子来看,我似乎在正确的轨道上,“锁定互斥量,等待,收到其他线程的信号,解锁互斥量,做事,循环”测试代码://Import#include#include#include#include//globalvariablespthread_cond_tcondA=PTHREAD_COND_INIT

c - pthread_cond_wait 2 个线程

我正在尝试为2个线程实现pthread_cond_wait。我的测试代码试图使用两个线程来执行以下场景:线程B等待条件线程A打印“Hello”五次线程A向线程B发出信号线程A等待线程B打印“再见”线程B向线程A发出信号循环开始(x5)到目前为止,代码打印了五次“Hello”,然后卡住了。从我看过的例子来看,我似乎在正确的轨道上,“锁定互斥量,等待,收到其他线程的信号,解锁互斥量,做事,循环”测试代码://Import#include#include#include#include//globalvariablespthread_cond_tcondA=PTHREAD_COND_INIT

c - ICE 默认 IO 错误处理程序执行 exit(),pid = 11281,errno = 4

我们的一个PyQt应用抛出一个关于ICEAuthority的错误,如下所示并退出-ICEdefaultIOerrorhandlerdoinganexit(),pid=11281,errno=4在查看跟踪时,我们看到以下内容-write(25,"\1\0\3\200\3\0\0\0\3\0\0\0\t\0\0\0\10\0\0\0\1\0\0\0\377rtStyle",32)=32read(25,0x16a67f0,8)=?ERESTARTSYS(Toberestarted)—SIGCHLD(Childexited)@0(0)—write(6,"\0",1)=1rt_sigreturn

c - ICE 默认 IO 错误处理程序执行 exit(),pid = 11281,errno = 4

我们的一个PyQt应用抛出一个关于ICEAuthority的错误,如下所示并退出-ICEdefaultIOerrorhandlerdoinganexit(),pid=11281,errno=4在查看跟踪时,我们看到以下内容-write(25,"\1\0\3\200\3\0\0\0\3\0\0\0\t\0\0\0\10\0\0\0\1\0\0\0\377rtStyle",32)=32read(25,0x16a67f0,8)=?ERESTARTSYS(Toberestarted)—SIGCHLD(Childexited)@0(0)—write(6,"\0",1)=1rt_sigreturn

c - 在 Linux 中跟踪 pthreads?

我没有找到任何用于跟踪linux进程中pthread线程的工具。我想要像strace/ltrace这样的东西,有没有可以实时查看调用的东西?谢谢 最佳答案 strace也适用于线程。使用strace-f跟踪所有线程。要仅跟踪特定线程,您首先必须找到它的tid(线程ID)。线程具有线程ID,它实际上是一个pid(进程ID)一旦知道线程的pid,使用strace-pthe_pid跟踪该线程。进程中所有线程的pid可以在/proc//task/中找到,或者可以通过gettid()了解当前线程IDC调用。