OpenAL偏移竞争条件

时间:2014-06-01 18:35:23

标签: ios race-condition openal

我在iOS上使用OpenAL似乎遇到某种竞争条件,快速交替调用get和设置AL_BYTE_OFFSET最终将值重置为0.这一切都是在音频源播放时完成的。

+ (void) seekTrackSeconds:(float)bytesDelta
{
  ALint position;
  alGetSourcei(sourcesArr[targetSourceIdx], AL_BYTE_OFFSET, &position);

  NSLog(@"byte pos read: %d", position);

  alSourcei(sourcesArr[targetSourceIdx], AL_BYTE_OFFSET, position + bytesDelta);
}

在前3个调用之后(总是3 ...有点奇怪),字节pos读取的输出重置为0.我觉得有一个设置/读取该值的竞争条件。我在读取和写入之间进行了20ms的睡眠,并且不常发生错误。睡眠时间为200毫秒,我没有注意到,但这是不可接受的表现。

有人遇到同样的问题吗?背景是我试图实现一个滚动来寻找'歌曲播放的功能。滚动虚拟转轮时,歌曲应该快进。

0 个答案:

没有答案