草庐IT

pthread_cond_timedwait

全部标签

c++ - 我们可以在 iPhone 应用程序中使用 pthread 而不是 NSThread

嗯,我有一个同时使用ObjectiveC和C++的应用程序,但出于可移植性的原因,我尝试尽可能多地使用C++...。现在我遇到了一些需要线程的问题,我正在考虑使用pthread而不是NSThread...可以使用pthread吗?Apple会通过拒绝我在应用商店中的应用来惩罚我使用它吗? 最佳答案 NSThread是围绕pthread构建的我看不出任何使用pthread会导致苹果拒绝的原因 关于c++-我们可以在iPhone应用程序中使用pthread而不是NSThread,我们在Sta

c++ - iPhone 游戏 CPU 分析和 pthread_setspecific

在iPhone3G上分析iOS游戏时,仪器报告系统调用pthread_setspecific(从许多看似无关的位置调用)是最大的CPU瓶颈。谷歌告诉我这涉及为线程存储元数据,但是我不确定如何追踪它,因为整个引擎是一个线程。这与CADisplayLink有关系吗?我可以优化特定场景以更好地解决这个问题吗?以下是一些可能有助于回答我的问题的相关信息:设备:iPhone3GiOS版本:4.2.1游戏代码完全是C++,应用层是obj-C。游戏使用OpenglES1.1不幸的是,RTTI和C++异常都是必需的,因此已启用。这是通过仪器中的CoreAnimation分析器运行发布版本(带有调试符号

c++ - 如何告诉 parent 该线程是使用 pthreads 在 C++ 中完成的?

我有一个TCP服务器应用程序,它使用POSIX线程和C++在新线程中为每个客户端提供服务。服务器在其套接字上调用“监听”,当客户端连接时,它会创建一个新的类Client对象。新对象在自己的线程中运行并处理客户端的请求。当客户端断开连接时,我想通过某种方式告诉我的main()线程该线程已完成,并且main()可以删除该对象并记录类似“客户端断开连接”的内容。我的问题是,我如何告诉主线程线程已完成? 最佳答案 我能看到的最直接的方法是加入线程。参见here.这个想法是,在连接调用中,命令线程将等待工作线程退出,然后恢复。或者,您可以使用

swift - pthread_create swift 示例

由于我需要将应用程序从C移植到Swift,我想知道是否有关于在Swift上使用pthread_create和pthread_join的示例。我知道通常我们必须使用NSThreads或GCD,但在这种情况下,我需要使应用程序代码尽可能接近C应用程序。谁能在这里举个例子?对了,要调用的函数是Swift函数,不是C函数 最佳答案 也遇到了这个问题。这是下面的简短示例。希望它能进一步帮助别人:swift4classThreadContext{varsomeValue:String="Somevalue"}funcdoSomething(po

objective-c - @synchronized 与 NSLock 实例与 pthread_mutex_t

我正在观看一个(2年前的)关于多线程的教程视频,其中指出NSLock实例比使用@synchronized快3倍pthread_mutex_t比NSLock实例快2倍(实际上比@synchronized快6倍)这是真的吗?我还没有找到任何有权威的说法,但我只是想在StackOverflow上对你们中的一些人进行投票,征求你们的意见,也许还有确凿的证据。谢谢!虽然我已经接受了正确答案,但此问题的future浏览者会发现这篇文章很有帮助:http://perpendiculo.us/?p=133 最佳答案 重要的是要记住@synchron

ios - 在 __pthread_kill 上崩溃

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。更详细地描述您的问题或includeaminimalexample在问题本身。关闭8年前。Improvethisquestion收到下面的崩溃报告,但不知道为什么会发生以及如何修复它。SIGABRTABORTat0x000000019aa3258clibsystem_kernel.dylib__pthread_killThread:Crashed:com.apple.main-thread0libsystem_kernel.dylib0x00000

go - sync.Cond 测试广播 - 为什么要循环检查?

我正在尝试使用sync.Cond-等待和广播。我无法理解其中的某些部分:Waitcalls的评论说:41//Becausec.LisnotlockedwhenWaitfirstresumes,thecaller42//typicallycannotassumethattheconditionistruewhen43//Waitreturns.Instead,thecallershouldWaitinaloop:44//45//c.L.Lock()46//for!condition(){47//c.Wait()48//}49//...makeuseofcondition...50//c.

go - 使用 channel 或 sync.Cond 等待条件

我正在尝试等待特定条件,我希望获得有关如何做到最好的建议。我有一个看起来像这样的结构(简化):typeviewstruct{timeFrameReachedboolRows[]*sitRow}在goroutine中,我正在更新一个文件,该文件被读入view变量。行数增加,timeFrameReached最终将为true。在其他地方,我想等待以下条件为真:view.timeFrameReached==true||len(view.Rows)>=numRows我正在尝试学习channel以及Go的条件变量如何工作,我想知道这里最好的解决方案是什么。理论上,我可以像这样做一些微不足道的事情:

c++ - “pthread_setname_np”未在此范围内声明

我在我的应用程序中创建了多个线程。我想为每个pthread分配一个名称,所以我使用了pthread_setname_np,它可以在Ubuntu上运行,但不能在SUSELinux上运行。我在谷歌上搜索了一下,了解到“_np”的意思是“不可移植”,而且这个api并不是在所有Linux操作系统版本上都可用。所以现在我只想在API可用时才这样做。如何判断api是否可用?我需要这样的东西。#ifdefSOME_MACROpthread_setname_np(tid,"someName");#endif 最佳答案 您可以使用feature_te

c - 关于 pthread_rwlock_wrlock 和 pthread_rwlock_wrlock 的问题

#include#include#includepthread_rwlock_trwlock=PTHREAD_RWLOCK_INITIALIZER;void*func(void*arg){while(1){printf("begin\n");pthread_rwlock_wrlock(&rwlock);printf("fallthroughwrlock\n");pthread_rwlock_wrlock(&rwlock);printf("fallthroughwrlock\n");pthread_rwlock_unlock(&rwlock);printf("fallthroughunl