草庐IT

pthread_cond_wait

全部标签

c - epoll_wait 由于 EINTR 而失败,如何补救?

由于EINTR,我的epoll_wait失败了。我的gdb跟踪显示:entercodehere221in../nptl/sysdeps/pthread/createthread.c(gdb)224in../nptl/sysdeps/pthread/createthread.c(gdb)[NewThread0x40988490(LWP3589)]227in../nptl/sysdeps/pthread/createthread.c(gdb)epoll_waiterrorinstarttimer:Measurementwillbeforentiredurationofexecutionep

c - 如何查找 pthread 是否有挂起的取消请求

我想知道对于一个线程,pthread_cancel是否被调用。我不想使用某些表并维护它们。是否有任何库函数可用于此?我不想使用一些取消点函数取消线程,如果有任何未决的取消请求,我只是想知道是否有任何未决的取消请求。 最佳答案 即使调用pthread_cancel,也不会立即执行。处理器需要自己的时间来取消线程。但是,这里要提一下:不推荐使用异步取消或立即取消。我遇到了一个问题,即在将pthread_setcanceltype()用作PTHREAD_CANCEL_ASYNCHRONOUS时,我的应用程序在取消期间崩溃。我实在找不到理由

python - 带有回调到 python VM 的 pthread

假设我有一个python脚本,它通过ctypes加载共享库(SL)。SL设置一个pthreadT1python脚本通过SL配置回调,即python脚本从SL调用函数并引用python可调用对象alttexthttp://www.gliffy.com/pubdoc/1993061/L.jpg现在,假设T1调用“回调”函数,以下假设是否成立:Python端的回调函数在T1的上下文中执行我可以使用queue在T1和PythonVM之间进行通信我需要在PythonVM端轮询上述queue我了解线程、共享状态等所有概念,但我还没有深入研究Python的多线程方面。由于目前我还不太了解适配层(ct

c - pthread 唤醒执行

如何让我的pthreads在每次被内核重新调度时执行一个函数?我需要确定我的线程被安排在哪个物理CPU/插槽(不是逻辑核心)上,并且不能一直这样做。是否可以仅在线程实际被重新安排时以某种方式Hook唤醒例程以对TLS进行必要的更新?至于为什么我需要这个:我的代码每线程每70ns执行一次AMOsappx,如果地址没有缓存在另一个套接字上,这很好,在两个套接字上部署相同的代码会产生15倍的性能影响,因为频繁缓存失效。我打算特别为此分配内存,它只在运行相同L3缓存的线程之间共享。所以我需要确定我在哪个套接字上运行并寻址正确的内存块。我显然可以调用sched_getcpu并将其与/proc/c

linux - JMeter 停留在 'Waiting for possible shutdown message on port 4445'

我正在尝试在命令行上使用jmeter:./jmeter.sh-n-ttestplan.jmx-llog.jtl它工作了8/10次,但有时它会卡在消息上:waitingforpossibleshutdownmessage..。我使用的是CentOS6和JMeter版本2.9r1437961。我的测试计划有两个线程组,它们被配置为从GUI连续运行。关于问题可能是什么的任何建议? 最佳答案 您是否为HTTP请求设置了超时?如果不是,则jmeter将无限等待来自服务器的响应,这可能会导致此类问题。因此解决方法是在连接时设置超时并在HTTP请

c - linux 用户级(pthread)线程是否在多个内核上运行?

我知道有:1)用户级线程-在进程的相同地址空间内,但具有不同的堆栈。2)内核级线程-在内核内存堆栈中(我在这里猜测)。所以当我创建用户级线程时,内核并不知道它们[1].那么内核如何知道,如何在不同的内核中调度不同的用户级线程。这个问题是关于pthread的。如果pthread是用户级线程,怎么跑在多核上?future的答案寻求者阅读:(感谢所有贡献者)1)Ziffusion的回答(下)2)DavidSchwartz'sanswer3)Tutorialpointlink 最佳答案 SoWhenIcreateuserlevelthrea

c - 为什么此 pthreads 代码在 OS X 上始终出现段错误,但在 Linux 上却没有?

我有一个任务调度代码,我想与基线进行比较,该基线基本上为每个任务创建一个新的pthread(我知道这不是一个好主意,但这就是为什么这只是比较基线的原因)。但是,出于某种原因,pthreads版本在OSX1上不断给我段错误,但是当我尝试在Linux2上运行相同的代码时,一切正常。在OSX上,它偶尔会成功完成,但通常会在pthread_create中出现段错误。,有时会在pthread_join中出现段错误反而。我还发现,如果我调用pthread_create供应PTHREAD_CREATE_DETACHED属性,并跳过pthread_joins,然后段错误问题就消失了。这个问题的底部包含

c - 向 pthread_create() 发送多个参数

这是来自TheLinuxProgrammingInterface的程序(原始代码here)。我想做的是使用pthread_create()向threadFunc发送2个“参数”对于下面列出的目标:第一个在threadFunc()的for循环中用作迭代器;第二个标识当前正在threadFunc()中工作的线程。所以它将是线程的某种可打印ID。为了实现这些目标,我创建了这个包含2个成员变量的结构:structarguments{intloops;pthread_tself;};并且这个函数循环'threadFuncLoops'次递增全局变量'glob'staticvoid*threadFu

c++ - eventfd_read/write 与 sem_wait/post

在Linux上,在C/C++程序中,如果我不关心我的eventfd是否被用于“select”,那么使用eventfd_read/write(带有EFD_SEMAPHORE标志)还是sem_wait/post更好?是否存在任何性能、可靠性和可移植性问题?由于我的程序使用了一些其他的eventfd对象(带有“select”),我认为使用eventfd比使用sem_wait/post更一致。 最佳答案 sem_wait/sem_post完全是用户空间,除非sem_waitblock或sem_post发布到具有服务员。即使那样,它们执行的系

c++ - 访问本地 linux 线程栈 (pthreads)

我目前正在实现一个使用多线程但对总内存消耗有要求的应用程序。我想要一个主线程做I/O和几个worker做计算。目前,我在主堆栈上有几个数据结构可供工作人员访问。我使用OpenMP进行工作分配。由于master/worker模式不能很好地与OpenMP配合使用,我想使用pthreads进行多线程处理。我知道每个线程都维护一个本地栈,但是创建线程时栈到底会发生什么?位于master堆栈上的数据结构是否可以被worker访问,或者我应该将它们移动到堆中吗?我还想避免数据重复,但不知道新线程是否会创建主堆栈的本地拷贝。编辑:自己找到了答案......在阅读了pthreads使用的clone()