gpt4 book ai didi

iPhone -Pthread 条件信号未解除阻塞等待线程

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:45:25 26 4
gpt4 key购买 nike

我有两个线程运行如下。该代码在 iPhone 模拟器上完美运行,但在设备上运行不佳。在 iPhone(运行 ios 5.1)上,线程 A 发出条件信号,但线程 B 无限期地等待条件。

在线程A中,当数据准备好被处理时:

pthread_mutex_lock(&mutex);
outstandingSig++;
pthread_cond_signal(&condVar);
pthread_mutex_unlock(&mutex);

在线程 B 中:

 while(1) 
{
pthread_mutex_lock(&mutex);
while(outstandingSig == 0)
{
pthread_cond_wait(&condVar, &mutex);
}

outstandingSig = 0; //Reset outstanding signals
pthread_mutex_unlock(&mutex);

// process data
}

关于它在设备上表现不同的任何建议?是什么导致线程 B 不使用信号?为什么模拟器和设备上的行为不同?

最佳答案

您是否查明了原因或找到了解决方法?我想我在 iPhone 设备上卡在 pthread_cond_wait 时遇到了类似的问题。

条件在 iOS 模拟器上正确发出信号,但在 iPhone 上运行时挂起。如果我暂停执行然后恢复,则条件满足并继续执行。

不过我确实注意到,pthread_cond_wait 的实现在不同的平台上是不同的。

苹果手机:

libsystem_c.dylib'pthread_cond_wait

iOS 模拟器:

libsystem_c.dylib'pthread_cond_wait$UNIX2003

关于iPhone -Pthread 条件信号未解除阻塞等待线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10400287/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com