C 回调函数中的同步问题

C 回调函数中的同步问题,c,linux,C,Linux,在连续循环中,条形码被扫描,如果扫描有效,文本数据和语音数据被读出/播放,这在不同的上下文中发生。首先进行文本播放,然后执行其回调函数,然后进行语音播放,然后执行其回调函数。当完成多次扫描时,会发现问题,有时会出现同步问题。在第一个条形码的文本播放过程中,如果进行了另一次扫描,则播放第二个条形码的语音数据(跳过第二个条形码的文本播放)。这种行为只是偶尔观察到的,所以调试起来有点困难 如何在回调中提供同步 提前感谢您的帮助 -Aparna您的问题不是很清楚,因此假设您当前有3个线程 从硬件读取条形

在连续循环中,条形码被扫描,如果扫描有效,文本数据和语音数据被读出/播放,这在不同的上下文中发生。首先进行文本播放,然后执行其回调函数,然后进行语音播放,然后执行其回调函数。当完成多次扫描时,会发现问题,有时会出现同步问题。在第一个条形码的文本播放过程中,如果进行了另一次扫描,则播放第二个条形码的语音数据(跳过第二个条形码的文本播放)。这种行为只是偶尔观察到的,所以调试起来有点困难

如何在回调中提供同步

提前感谢您的帮助


-Aparna

您的问题不是很清楚,因此假设您当前有3个线程

  • 从硬件读取条形码
  • 显示代码
  • 将代码作为条形码中包含的文本进行音频播放
  • 读取条形码的线程是数据的生产者,应该将一个工作单元推到消费者堆栈上,并且应该通知堆栈存在一个工作单元。对生产者消费者队列运行粗略的谷歌搜索


    线程2和线程3似乎是同步的,应该组合成一个线程?

    让我试着更清楚地解释一下。线程1:读取条形码,如果是有效的条形码,则从文件中读取文本数据,并将其交给tts引擎进行文本读取。tts引擎完成后,将调用另一个回调函数TTScalBack(),该函数与thread1位于相同的上下文中。[ttscallback和thread1在同一文件中定义],如果条形码有一些与之相关联的音频文件,则下一步播放,完成后执行audiocallback()func。[音频回调也在同一文件中]